一、常规代码:
char name[5];
printf("Name: ");
scanf("%s", name);
printf("Name = %s\n", name);
测试:
1、输入“abc”, 输出“abc”,正确
2、输入“ab c”, 输出“ab”, 出错,原因是scanf碰到空格就结束了
3、输入“012345”,没有输出直接出错了,原因是输入的字符串长度大于5
二、使用gets函数
char name[5];
printf("Name: ");
gets(name);
printf("Name = %s\n", name);
测试:
1、输入“abc”, 输出“abc”,正确
2、输入“ab c”, 输出“ab c”, 正确
3、输入“012345”,没有输出直接出错了,原因是输入的字符串长度大于5
三、使用getchar自定义一个函数
#include
#include
#define N 5
void GetString(char *p, int p_len)
{
char c;
int i = 0;
while((c = getchar()) != '\n') {
if(i < p_len) {
p[i] = c;
i++;
} else {
break;
}
}
p[i] = '\0';
}
int main(int argc, char *argv[])
{
char name[N];
printf("Name: ");
GetString(name, N);
printf("Name = %s\n", name);
return 0;
} 测试: 1、输入“abc”, 输出“abc”,正确 2、输入“ab c”, 输出“ab c”, 正确 3、输入“012345”,输出“01234”, 正确