【发布时间】:2015-02-18 13:11:03
【问题描述】:
当我输入姓氏之类的数据时,我得到了它,因此它限制为 10 个字符,但是当我尝试输入姓氏时,从名字中排除的字符被放入姓氏中.例如,如果我输入aaaaaaaaaab,它将保留a,但b 将被放入姓氏中。
有什么建议可以解决这个问题吗?我希望它将长度限制在正确的数量。
printf("you chose add new record\n");
printf("enter the person information: \n");
printf("Please enter the first name: \n");
//limits to size 10
char namein[11];
fgets(namein, 11, stdin);
printf("the first name was: %s\n", namein);
printf("Please enter the last name: \n");
//limits to size 20
char lastin[21];
fgets(lastin, 21, stdin);
printf("the last name was: %s\n", lastin);
【问题讨论】:
-
您是要坚持在两行输入中输入名字和姓氏,还是在单行中接受“firstname lastname”为有效?使用的技术是不同的。前者更容易;您可以预先阅读整行内容(使用 更大的缓冲区)并使用
sscanf()对缓冲区进行后处理。请注意,如果有人输入Jim E Cork,您的fgets()将把Jim E Cork变成namein;目前尚不清楚这就是你想要的。此外,下一个fgets()将在 'Jim E Cork' 之后获得换行符,这也不是您想要的。 -
我基本上只是寻找输入的前 10 个字符,所以如果名称是 jimmyeguysZ,Z 将被剥离并仅将输入保存为 jimmyeguys
标签: c