我char str[5000];
中没有任何内容。
然后我toCharArray(fp1, str);
void toCharArray(FILE *fp1, char *str) {
while(!feof(fp1)) {
fscanf(fp1, "%c", *(str++));
}
程序崩溃,fscanf行没有错误消息。我试图使用*(str++)
语句迭代数组,并将文件中的值分配给每个元素。我可以*(str++) = 'G'; *(str++) = 'H';
转到我心中的内容(printf("%c", *(--str));
会返回正确的值)但我不能使用fscanf看似做同样的事情。
答案 0 :(得分:1)
你必须考虑代码中的几点
fscanf()
中,"%c
需要一个指向角色的指针。你说你的数组大小是5000,所以while()
循环不应该运行得多。
void toCharArray(FILE *fp1, char *str) {
int i = 0;
if(fp1 == NULL || str == NULL){
printf("Invalid arguments..\n");
return;
}
while((i<5000)&&(EOF!=fscanf(fp1, "%c", &str[i]))) {
i++;
}
}