在执行此代码时,我对指针感到困惑:
typedef struct Times{
char time[100];
}Time;
Time *ptTimes(int tam, FILE *caminho){
Time *times;
times = (Time *)malloc((tam)*(sizeof(Time)));
int i = 0;
while(i < tam){
fscanf(caminho, " %[^;];", (times->time));
i++;
}
i=0;
while (i < tam){
printf("%s", times->time);
times++;
i++;
}
return(times);
}
函数*ptTimes
应该返回Time
结构指针。我打算做的是创建一个名为*times
的结构指针,然后指向由malloc
分配的其他几个结构。我试图通过分配的空格并存储文件中的字符串time[100]
。 tam
是程序应该读取的字符数,它是从main函数发送的参数。另外,我试图在屏幕上打印结构与printf
存储的内容。 / p>
我知道我做错了,printf
在屏幕上显示的唯一内容是文件列表中的最后一个字符串。
以下是.txt
文件的示例:
Team1;
Team2;
Team3;
Team4;
我愿意接受建议或想法。我需要在此代码中使用结构。
答案 0 :(得分:1)
编辑:从指针数组切换到对象数组。
这行代码将始终写入'times'中的第一个元素,无论'i'的值如何:
fscanf(caminho, " %[^;];", (times->time));
相当于这一行:
fscanf(caminho, " %[^;];", (times[0].time));
这可能是你想要的:
fscanf(caminho, " %[^;];", (times[i].time));
你还需要摆脱'times ++'系列。时间指针应该继续指向它分配的内存,直到你释放它为止。
答案 1 :(得分:0)
将times->time
更改为times[i].time
,并在第二次循环结束时删除times++
。