C fscanf和指针数组

时间:2017-03-13 06:58:55

标签: c

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看似做同样的事情。

1 个答案:

答案 0 :(得分:1)

你必须考虑代码中的几点

  • 错误检查参数。
  • fscanf()中,"%c需要一个指向角色的指针。
  • while-feof-file-always-wrong
  • 你说你的数组大小是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++;
         }
    }