这个代码有什么问题 #include<stdio.h> #include<string.h> int main() { int n; int i=0; char chr[200]; char chr_2[200]; char chr_3[200]; scanf("%d", &n); scanf("%[^\n]", chr); scanf("%[^\n]", chr_2); scanf("%[^\n]", chr_3); printf("%s\n", chr); printf("%s\n", chr_2); for(i=0; i<strlen(chr_3); i++){ if(chr_3[i] !=" "){ printf("%c\n", chr_3[i]); } printf("%c", chr_3[i]); } return 0; }
时间: 2024-03-27 15:39:26 浏览: 37
这段代码存在以下问题:
1. 在读取字符数组 chr_3 时,使用了错误的比较方式。应该使用单引号来表示字符,而不是双引号。因此,将 `if(chr_3[i] !=" "){` 改为 `if(chr_3[i] != ' '){`。
2. 在输出字符数组 chr_3 时,无论是否是空格都会输出一次。因此,应该将 `printf("%c", chr_3[i]);` 放到 if 语句的外面。
3. 在输入多个字符串时,应该在每个 scanf 函数前加上 getchar(),以消耗输入缓冲区中的换行符。因此,将代码修改为:
```c
#include <stdio.h>
#include <string.h>
int main() {
int n;
int i = 0;
char chr[200];
char chr_2[200];
char chr_3[200];
scanf("%d", &n);
getchar(); // 消耗第一行输入缓冲区中的换行符
scanf("%[^\n]", chr);
getchar(); // 消耗第二行输入缓冲区中的换行符
scanf("%[^\n]", chr_2);
getchar(); // 消耗第三行输入缓冲区中的换行符
scanf("%[^\n]", chr_3);
printf("%s\n", chr);
printf("%s\n", chr_2);
for(i = 0; i < strlen(chr_3); i++){
if(chr_3[i] != ' '){
printf("%c\n", chr_3[i]);
}
}
printf("%s", chr_3);
return 0;
}
```