Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:如何创建一个fscanf循环,将文件中的元素分配到结构中_C - Fatal编程技术网

C:如何创建一个fscanf循环,将文件中的元素分配到结构中

C:如何创建一个fscanf循环,将文件中的元素分配到结构中,c,C,我需要创建一个将元素从文件复制到结构的函数。 我很难创建一个循环来分配第二行代码,第三行。。。在这里分配一个整数之前,游戏->单词[b]。名称[c]。使用函数读取整数、字符和一系列字符是否更好 int loadgame(GAME *game){ FILE *fptr; int ch,a,b=0,c=0,i=0,j=0; fptr = (fopen("saveGame0.txt", "r")); pr

我需要创建一个将元素从文件复制到结构的函数。 我很难创建一个循环来分配第二行代码,第三行。。。在这里分配一个整数之前,游戏->单词[b]。名称[c]。使用函数读取整数、字符和一系列字符是否更好

int loadgame(GAME *game){                                            
FILE *fptr;
int ch,a,b=0,c=0,i=0,j=0;

fptr = (fopen("saveGame0.txt", "r"));
    printf("Error opening file");
    exit(1);
}
else{
    for(a=0;a<2;a++){
        while((ch = fgetc(fptr)) != ';'){
       game->players[a].name[i]=ch;                                     
        i++;    
        }

        fscanf(fptr, "%d", &game->players[a].points);  

        fseek(fptr,1,SEEK_CUR);                     
        while ((ch = fgetc(fptr)) != '\n'){                 
            game->players[a].hand[j].letter = ch;
            j++;
        }
    }
    fscanf(fptr,"%d", &game->word_count);
    fseek(fptr,1,SEEK_CUR);

}

任何使用
fseek
读取简单数据序列的程序,并且不注意文件输入函数的返回值,可能需要重写。我看不到您以
'\0'
终止任何似乎正在读取字符串的数据项。但事实上,请试着找出问题所在。显示一些预期输入和实际输入的示例。
fscanf()
fseek()。检查输入函数的返回值。这不是检查函数的返回值。对于每个
fscanf()
,使用类似于
if(1!=fscanf(fptr,“%d”,&game->words[b].row)){put(“Failed”);exit(-1);}
。对于
fseek()?
            while((ch = fgetc(fptr)) != ';'){
                game->words[b].name[c]=ch;
                c++;                                    
            }
        fscanf(fptr,"%c", &game->words[b].orientation);

        fseek(fptr,1,SEEK_CUR);
        fscanf(fptr,"%d", &game->words[b].row);         
        fseek(fptr,1,SEEK_CUR);

        fscanf(fptr,"%c", &game->words[b].col);         
        fseek(fptr,1,SEEK_CUR);

        fscanf(fptr,"%d", &game->words[b].points);
        fseek(fptr,1,SEEK_CUR);
        fscanf(fptr,"%d",&game->words[b].player);

        fseek(fptr,1,SEEK_CUR);
    }

}
fclose(fptr);
return 0;