hit*_*ter 5 c arrays string printf
我制作了一个接受字符串(名字/姓氏)的程序,但是我不是
3岁的Phil Snowken 的典型输出,而是3 岁的
Phil
Snowken
#include <stdio.h>
#define N 10
struct data{
char fname[30];
char lname[30];
int age;
};
main()
{
int i;
struct data base[N];
for(i=0;i<N;i++){
printf("\n-------------------------");
printf("\nPeople Data(%d remaining)\n",N-i);
printf("---------------------------\n\n");
printf("\nFirst Name ");
fgets(base[i].fname,30,stdin);
printf("\nLast Name ");
fgets(base[i].lname,30,stdin);
printf("\nAge ");
scanf(" %d",&(base[i].age));
fflush(stdin);
}
for(i=0;i<N;i++)
printf("%s %s Year:(%d)",base[i].fname,base[i].lname,base[i].age);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
fgets()使用输入的字符串读取换行符,因此每次按Enter时,它\n也将读入字符串(请参阅man fgets)
您必须检查最后一个字符,并将其\n更改为\0,例如:
size_t length = strlen(base[i].fname);
if (base[i].fname[length-1] == '\n')
base[i].fname[length-1] = '\0';
Run Code Online (Sandbox Code Playgroud)