我试图在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();
}
Run Code Online (Sandbox Code Playgroud)
Input: Bangalore is in India
Output: Bangalore
Run Code Online (Sandbox Code Playgroud)
有什么建议?
使用时scanf()
,%s格式会跳过前导空白区域,然后扫描非白色空格字符并停在输入行的下一个空白区域.
这意味着只Bangalore读取,所以只Bangalore打印.
如果你想要一整行输入,你应该使用fgets().
您还应该从编译器收到有关打印代码的警告.您可能希望在没有循环的情况下使用它:
printf("%s\n", str);
Run Code Online (Sandbox Code Playgroud)
或者在循环中:
printf("%c", str[i]);
Run Code Online (Sandbox Code Playgroud)
虽然这会更快:
putchar(str[i]);
Run Code Online (Sandbox Code Playgroud)
你需要担心在最后(putchar('\n');循环之后)添加换行符.