#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之后,控制台给我一个空白行,我必须至少输入一个字符或数字才能显示&#34;输入学生ID&#34;。
Enter name: bob
Enter last name: jones
1
Enter id: a00998877
然后文件输出是这样的:
&#34; bob jones11&#34;
我希望输出是这样的:
&#34; Bob Jones a00998877&#34;
我做错了什么?
答案 0 :(得分:0)
为什么要扫描这一行中的两个输入:
scanf("%s %d", id, &stdnum);
id
是一个char
数组,可以保存字母数字输入。您可以删除stdnum
。
scanf("%s", id);
答案 1 :(得分:-1)
char first[10], last[10], id;
id
是一个不需要数组的单个字符。
scanf("%s", last);
在
之后删除了空格scanf(" %c%d", %id, &stdnum)
将id
更改为字符串
fprintf(fptr,"%c\n", id)
此处相同,更改为char