带有整数和字符的字符串 - C.

时间:2017-02-11 23:15:50

标签: c printf scanf

#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;

我做错了什么?

2 个答案:

答案 0 :(得分:0)

为什么要扫描这一行中的两个输入:

scanf("%s %d", id, &stdnum);

id是一个char数组,可以保存字母数字输入。您可以删除stdnum

的使用
scanf("%s", id);

我有example-with-stdin-stdout

答案 1 :(得分:-1)

char first[10], last[10], id;

id是一个不需要数组的单个字符。

scanf("%s", last);

之后删除了空格
scanf(" %c%d", %id, &stdnum)

id更改为字符串

中的char
fprintf(fptr,"%c\n", id)

此处相同,更改为char