我的程序旨在将句子中的每个单词打印在单独的行上。但我应该用 %s 而不是 %c 打印它!我已经尝试实现它,但程序没有给我正确的输出!我的想法是当你找到空字符时 1-打印单词 2- 将临时数组的索引返回到 0 并存储一个新单词
int main () {
char sen[100];
char cpy [100];
printf("Entter a sentence ");
gets(sen);
int len = strlen(sen);
int i = 0;
int k =0;
for (i=0 ; i<len;i++)
{
if (sen[i]!='\0')
{
cpy[k++]+=sen[i];
}
else{
printf("%s\n",cpy);
k=0;}
}
}
最佳答案
您混淆了空字符和空格字符。空字符 \0
代表“字符串结尾”:strlen 函数返回第一个 \0
之前的字符数。
在 for 循环中,您希望显示由 分隔的每个单词,因此您必须使用字符
而不是
\0
进行测试。
此外,为了正确显示字符串,您必须以 \0
字符结束字符串。因此,在指令 printf
之前,您必须执行 cpy[k] = '\0';
。
关于c - 在单独的行中打印每个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43700158/