-1
我有一个文本文件,每行包含逗号分隔值中的人名和性别。我正在尝试逐行读取并创建人员数组。不知道我的代码出了什么问题数组的所有元素都设置为文本文件的最后一行。 (如果最后一行具有山姆,男,人阵列的所有元件被设置为名称=萨姆)文件在c中逐行读取将值复位到最后一项
struct Person{
char* Name;
char* Gender;
};
struct Person person[100];
void readAllFromFile(){
FILE * fp;
char currentLine[256];
int fd;
if((fp = fopen ("test.txt", "r"))==NULL){
perror("Can not open");
fclose(fp);
return;
}
int currentLineNo=0;
char *items;
while (fgets(currentLine, sizeof(currentLine), fp)) {
items=strtok(currentLine,",");
struct Person tempPerson;
int iter=0;
while(items != NULL)
{
if(iter==0){
tempPerson.Name=items;
}
else {
tempPerson.Gender=items;
}
iter++;
items=strtok(NULL,",");
}
person[currentLineNo]=tempPerson;
currentLineNo++;
}
/*Printing element of the array*/
int i;
for(i=0;i<currentLineNo;i++){
printf("%s\n",person[i].Name);
}
fclose(fp);
}
int main() {
readAllFromFile();
return 0;
}
[C:用于构建char *链接列表的fgets用法]的可能重复(https://stackoverflow.com/questions/46243081/c-fgets-usage-for-building-a-linked-list- char) –
今晚第二个问题,同样的问题。很多,很多重复:( –