C - Char数组的数组

PnP*_*PnP 4 c arrays io fopen pointers

我试图在这个主题的K和R书中使用这个例子,但是很挣扎.

我想要一个Char Arrays数组,其中'Father'数组的每个元素都指向一个字符数组(字符串).基本上,我正在读取一个文件,一次一行,将每行存储到一个数组中,然后尝试将该数组存储到另一个数组中,然后我可以通过qsort对其进行排序.

但我似乎无法随心所欲!我的代码上的Anyhelp非常感谢,即从哪里开始!

编辑:问题是,打印功能不打印出我应该在数组数组内的单词,而不是它只是打印垃圾,主要问题是,我不确定我是否正确地取消引用,或者根本没有,我是否正确地将它添加到数组数组等.

问候.

#define MAXLINES 5000 /* max no. lines to be stored */
#define MAXLEN 1000 /* max length of single line */

char *lineptr[MAXLINES];

void writelines(char *lineptr[], int nlines);

int main(int argc, char *argv[]) {
 int nlines = 0, i, j, k;
 char line[MAXLEN];
 FILE *fpIn;
 fpIn = fopen(argv[1], "rb");
 while((fgets(line, 65, fpIn)) != NULL) {
     j = strlen(line);
     if (j > 0 && (line[j-1] == '\n')) {
         line[j-1] = '\0';
     }
     if (j > 8) {
         lineptr[nlines++] = line;
     }
 }  
 for(i = 0; i < nlines; i++)
     printf("%s\n", lineptr[i] );
return 0;    
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*Dan 5

一个问题是它line[MAXLEN]是一个自动变量,所以每次通过while循环它都引用同一个数组.您应该line通过while循环(line = calloc(MAXLEN, sizeof(char))在调用之前fgets)每次动态分配.否则fgets始终写入相同的内存位置并lineptr始终指向同一个数组.