我应该从一个文本文件中填充一个结构数组。这是结构的定义:
typedef struct{
char name[20];
int age;
}person;
此结构应该对用户数据(年龄和姓名)进行分组,我应该从以下格式的文件中获取这些数据: 用户一 35## 标题 ## 用户二 36## 标题 ## 用户三 8## 标题 ## 这是我提出的部分代码(填充函数,稍后由 main 调用):
void fill_array_elements(person* l_p,int N){
int i,j,index,length;
char temp,First_Name[10],Last_Name[10];
FILE*infp;
infp=fopen("PeopleInfo.txt","r");
if(infp==NULL)
printf("Could not open file.\n");
else
{
for(i=0;i<N;i++)
{
fscanf(infp,"%s",First_Name);
fscanf(infp,"%s",Last_Name);
temp=getc(infp);
fscanf(infp,"%d",&l_p[i].age);
strcpy(l_p[i].name,First_Name);
l_p[i].name[strlen(l_p[i].name)]=' ';
strcat(l_p[i].name,Last_Name);
}
}
fclose(infp);
}
当我尝试显示我的数组时,我总是在以下格式的第一个字符串中得到垃圾:User %:n5jnfOne。其他字符串正常打印。这是一个简单的信心还是我的代码全错了? (我尝试了几行,总是得到相同的输出) 谢谢!
最佳答案
这一行:
l_p[i].name[strlen(l_p[i].name)]=' ';
用空格替换\0 终止符。它不添加新的终止符,因此没有终止符,字符串之后发生的任何事情都被认为是字符串的一部分。
最简单的解决方案是像往常一样使用 strcat
,即使您只附加一个字符:
strcat(l_p[i].name, " ");
关于c - 在 C 中从文件中填充字符串时获取垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28617565/