gpt4 book ai didi

c - 从文件读取的 while 循环会跳过第一行

转载 作者:行者123 更新时间:2023-11-30 18:13:21 28 4
gpt4 key购买 nike

我必须逐行将文件中的数据读取到结构数组中,但它会跳过第一行。我在其他地方发现,由于 fgets 和 sscanf 组合,第二行是第一个读取的,但我不明白为什么或如何解决这个问题。任何建议或指出正确的方向都会很棒!

void readData(){
char line[50];
char name1[1][50];
int O, M, R, W;

input = fopen("input2.dat", "r");

//count = 0;
while(fgets(line, 50, input) != NULL){
hasReadData = 1;
sscanf_s(line, "%20s %d %d %d %d", name1[0], 50, &O, &M, &R, &W);

for(i=0; i<200; i++){
if(strcmp(name1[0], player_arr[i].name) == 0){
if(O<0 || M<0 || R<0 || W<0){
printf_s("%s %d %d %d %d", name1[0], O, M, R, W);
printf_s("\tNegative value, data invalid\n");
break;
}
if(O<M){
printf_s("%s %d %d %d %d", name1[0], O, M, R, W);
printf_s("\tOvers less than Maidens, data invalid\n");
break;
}
if(W>10){
printf_s("%s %d %d %d %d", name1[0], O, M, R, W);
printf_s("\tWickets greater than 10, data invalid\n");
break;
}

player_arr[i].oversOverall += O;
player_arr[i].maidensOverall += M;
player_arr[i].runsOverall += R;
player_arr[i].wicketsOverall += W;

player_arr[i].oversLatest = O;
player_arr[i].maidensLatest = M;
player_arr[i].runsLatest = R;
player_arr[i].wicketsLatest = W;
}
}
}
fclose(input);
}

最佳答案

如果您的 while 在从文件读取时跳过第一行,则在 while 循环内使用此命令:

file_pointer.seekg(0,ios::beg);

此文件指针会将您的指针设置到文件的开头。

关于c - 从文件读取的 while 循环会跳过第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26171987/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com