c - 在单独的行中打印每个单词

标签 c

我的程序旨在将句子中的每个单词打印在单独的行上。但我应该用 %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/

相关文章:

c - 使用 fscanf 从包含整数数组的文件中读取

c - 将结构体的动态数组传递给函数进行分配

c - K60 系列 GPIO 键盘(C 语言)

c - 如何控制变量中的单个位?

C:二进制命令行参数与二进制局部变量不同

c - 简单的 c malloc

C预处理器: building a path string

c++ - 如何将 C 结构定义转换为 C++

c - 好的做法 - 在功能终止时有很多事情要做 - 转到替代方案

C 语言实现的 cd 命令