我正在尝试在C中打印字符数组,但如果出现任何空格,则不打印数组。这是我的代码:
int main() {
char str[100];
int len = 0;
printf("Enter the string");
scanf("%s", str);
len = strlen(str);
int i = 0;
for (i = 0; i < len; i++) {
printf("%s", str[i]);
}
getch();
}
Input: Bangalore is in India
Output: Bangalore
有什么建议吗?
答案 0 :(得分:5)
scanf()
,%s
格式跳过前导空格,然后扫描非空格字符并停在输入行的下一个空格处。
这意味着只会读取Bangalore
,因此只会打印Bangalore
。
如果您需要整行输入,则应该使用fgets()
。
您还应该从编译器收到有关打印代码的警告。你可能想在没有循环的情况下使用它:
printf("%s\n", str);
或循环中的这个:
printf("%c", str[i]);
虽然这会更快:
putchar(str[i]);
你需要担心最后添加换行符(循环后putchar('\n');
)。
答案 1 :(得分:1)
如果遇到空格或新行,从终端读取输入将停止。你可以做两件事来得到你需要的东西
fgets(str, 100, stdin)
scanf ("%[^\n]%*c", str);
第二件事,如果要打印字符数组,则必须使用%c
答案 2 :(得分:0)
阅读手册页
你需要%c而不是%s