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)
任何帮助,将不胜感激。
在您的代码中,
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()来完成这项工作。
那说,
scanf("%s", s);到scanf("99%s", s);通过投入再输入字符串比99避免可能出现的缓冲区溢出char秒。main()是int main(void)。