0
我想把一個文件的所有行放在char **中。 我的功能很簡單: 唯一的參數是一個指向char數組的指針,它包含文件。 我首先計算行數來分配我的char **。 一旦分配,我使用strtok_r來解析文件。然後Segfault。 我想知道是否有可能以這種方式做到這一點?獲取一個字符數組和段錯誤的所有行
char **getlines(char *file)
{
int i = 0;
int nblines = 0;
while (file[i] != '\0')
{
if (file[i] == '\n')
nblines++;
i++;
}
char **array = malloc(sizeof(char*) * nblines);
char *saveptr;
if (nblines == 0)
return NULL;
int a = 0;
char *c = strtok_r(file, "\n", &saveptr);
while (c)
{
array[a] = strtok_r(NULL, "\n", &saveptr);
a++;
}
return array;
}
這個問題應該關閉,因爲OP會不斷改變問題,並且它不再有意義。 – 2014-10-02 10:51:19