-
```
#include<stdio.h>
int main() {
char a[20];
int i;
for(i=0;a[i]!="\n";i++)
{
scanf("%c",a[i]);
}
return 0;
}```
利用循环输入一个字符数组,遇到回车时停止,但是这样会报错,运行速度很慢
在使用C语言编写的这段代码中,存在以下问题:
该程序不会输出任何提示信息,告诉用户该输入什么内容。建议添加合适的提示信息以清晰地指导用户操作。
在for循环中用!="\n"来比较判断条件是错误的,因为a[i]是字符类型,而"\n"是字符串类型。应该将判断条件修改为 a[i] != '\n' 或者使用strcmp函数进行字符串相等的判断。
在使用scanf()函数读取字符数据时,需要指定对应变量的地址,即&a[i]而不是a[i]。
为了防止输入超出数组长度,应该在定义字符数组时给其分配足够的空间,如char a[20];可以修改为char a[50];或更大。
下面是修改后的示范代码:
#include <stdio.h>
#define MAX_LEN 50 // 定义字符数组最大长度
int main() {
char a[MAX_LEN];
int i;
printf("请输入一个字符串(不超过%d个字符):", MAX_LEN - 1);
for (i = 0; i < MAX_LEN; i++) {
scanf("%c", &a[i]); // 读取输入的字符到a[i]中
if (a[i] == '\n') { // 当输入回车符时结束输入
break;
}
}
printf("您输入的字符串是:%s\n", a); // 输出输入的字符串
return 0;
}
该程序可以读取用户输入的字符串,并在输出时将其打印出来。
#include<bits/stdc++.h>
using namespace std;
int i;
char a[20];
int main(){
while(cin>>a[i++]){
}
return 0;
}
//换行后再输入^Z(Ctrl+z)
这样改,供参考:
#include<stdio.h>
int main() {
char a[20];
int i;
for (i = 0; (a[i] = getchar()) != '\n'; i++);
//{
// scanf("%c", a[i]);
//}
a[i] = '\0';
puts(a);
return 0;
}