首页 > 解决方案 > C/ 从文件到数组的字符串数据。分段故障

问题描述

我正在编写一个程序,它从文本文件中流式传输单词并将它们放入数组中。我还添加了数组数据的显示以查看是否一切正常,但编译后出现分段错误。

我是系统编程的新手,所以我知道我可能犯了一些基本错误。请找到下面的代码并告诉我哪里出错了。

#include <stdio.h>

#define BUFFER 100

int main() {
    char tab[BUFFER];
    FILE *wp;
    wp = fopen("tab_file_b_words.txt", "r");
    if(wp == NULL)
    {
        printf("error/n");
        return -1;
    }
    int i;
    for(i=0; i<sizeof(wp); i++) {
        if(wp != NULL)
            fscanf(wp, "%s", &tab[i]);
        else 
            break;
        }
    printf("Content: \n");
    for(i = 0; i < BUFFER; i++) {
        if(tab[i] != NULL)
            printf("%s\n", tab[i]);
        else 
            break;
        }
    fclose(wp);
    return 0;
}

标签: carraysstream

解决方案


  1. 截至目前,你有数组char

    你需要的是

       char tab[BUFFER]; --> char tab[BUFFER][SOME_LENGTH];
    

       fscanf(wp, "%s", &tab[i]); --> fscanf(wp, "%s", tab[i]);
    
  2. %s期望null终止char *,但您正在通过char.

        printf("%s\n", tab[i]);
    
  3. sizeof(wp)是指针的大小。

    for(i=0; i<sizeof(wp); i++)
    

    你需要的是

      while (1 == fscanf(wp, "%s", tab[i]))
      {
             ...
      }
    

推荐阅读