【发布时间】:2017-02-11 23:15:49
【问题描述】:
#include <stdio.h>
#include<stdlib.h>
int main()
{
char first[10], last[10], id[10];
int stdnum;
FILE *fptr;
fptr = fopen("C:\\c\\program.txt","w");
if(fptr == NULL)
{
printf("Error!");
exit(1);
}
else
{
//first name
printf("Enter name: ");
scanf("%s", first);
fprintf(fptr,"%s ",first);
//last name
printf("Enter last name: ");
scanf("%s ", last);
fprintf(fptr,"%s", last);
//id
printf("Enter id: ");
scanf("%s %d", id, &stdnum);
fprintf(fptr,"%s\n", id);
fprintf(fptr,"%d\n", stdnum);
fclose(fptr);
return 0;
}
}
我正在编写一个程序,询问用户姓名、姓氏和学号。学号格式为小写字母后跟 8 位数字。 当我运行此代码时,我可以输入名字和姓氏。在我输入姓氏并在 cygwin 中按 Enter 后,控制台给了我一个空白行,我必须在其中输入至少一个字符或数字才能显示“输入学生 ID”。
Enter name: bob
Enter last name: jones
1
Enter id: a00998877
那么文件输出是这样的:
“鲍勃·琼斯11”
我希望输出是这样的:
“鲍勃·琼斯 a00998877”
我做错了什么?
【问题讨论】:
-
在读取姓氏时,尝试删除
scanf("%s ", last);中%s后面的空格。 -
你应该看看proper C formatting。