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