Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用双指针从文本文件填充字符串数组?_C_Pointers_Readfile_Double Pointer - Fatal编程技术网

C 如何使用双指针从文本文件填充字符串数组?

C 如何使用双指针从文本文件填充字符串数组?,c,pointers,readfile,double-pointer,C,Pointers,Readfile,Double Pointer,我试图读取文件并使用指针将字符串保存在数组中,但遇到了问题。有人能给我一些建议吗 // not allowed to change these two rows char **Lines; Lines = (char**)malloc(sizeof(char*)*maxLines); ... FILE *fp; fp = fopen(fileName, "r"); // fileName already exists here int i=0, j=0; while(i<ma

我试图读取文件并使用指针将字符串保存在数组中,但遇到了问题。有人能给我一些建议吗

// not allowed to change these two rows
char **Lines;
Lines = (char**)malloc(sizeof(char*)*maxLines);

...

FILE *fp;
fp = fopen(fileName, "r");     // fileName already exists here
int i=0, j=0;

while(i<maxLines){
    Lines[i] = (char*)malloc(maxLength * sizeof(char)); 
    i++;
}

// No string will be longer than "maxLenght" so no buffer is used.
while(fgets(Lines[j] , maxLength, (FILE*) fp) != NULL && j < maxLines) 
{
        j++
}
//不允许更改这两行
字符**行;
Lines=(char**)malloc(sizeof(char*)*maxLines);
...
文件*fp;
fp=fopen(文件名,“r”);//此处已存在文件名
int i=0,j=0;

while(i在第二个while循环中,用“&&&”替换“| |”


本例中的循环即使在到达maxlines之后也会继续执行。

可能看一看,也可以看一看。您分配了一个指针数组(每行一个指针)但是没有为任何一行分配内存。你可以先将每一行读入一个大缓冲区,这样你就知道它有多长,然后分配足够的内存并复制它。这个问题,或者它的一个变体,一天会被问多次。请在问之前搜索!我不知道它是否解释了segfault,但在第二个循环中
I
应该是
j
。我犯了一个愚蠢的错误。谢谢。我仍然会遇到段错误tho:(现在你在fgets中使用j,使用j这个愚蠢的问题和另一个风向标问题解决了。谢谢!