从输入字符串在单独的行中打印每个单词

Roo*_*der 2 c string printf scanf char

我无法从 C 中的输入字符串在单独的行中打印每个单词。我正在做的作业中的问题指出:

将一个句子作为输入并将其单词打印在单独的行中。

我的代码:

#include<stdio.h>

int main()
{
   int i;
   char s[100];

   scanf("%s", s);

   for(i=0; s[i]!='\0'; i++)
   {
      printf("%c", s[i]);

      if(s[i]==' ')
      {
         printf("\n");
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

Sou*_*osh 5

在您的代码中,

  printf("%s", s[i]); 
Run Code Online (Sandbox Code Playgroud)

是错的。将其更改为

 printf("%c", s[i]); 
Run Code Online (Sandbox Code Playgroud)

因为,您正在尝试打印一个char值。a 的转换说明符char%c

注意:永远记住,使用错误的转换说明符会导致未定义的行为

此外,在使用scan()-ing 时%s,您无法将整个以空格分隔的输入作为单个字符串读取。从手册页,

%s

匹配一系列非空白字符;next 指针必须是指向字符数组的指针,该指针的长度足以容纳输入序列和'\0'自动添加的终止空字节 ( )。输入字符串在空白处或最大字段宽度处停止,以先发生者为准。

你需要使用fgets()来完成这项工作。

那说,

  1. 正确缩进您的代码,使其易于阅读。
  2. Chnagescanf("%s", s);scanf("99%s", s);通过投入再输入字符串比99避免可能出现的缓冲区溢出char秒。
  3. 的正确签名main()int main(void)