我试图逐行阅读文字,看了一些例子后,我决定使用malloc
方法,但是我一直收到错误
error: subscript of pointer to function type
'void *(unsigned long)'"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *readFile(char filename[])
{
char line[100];
char *list = malloc(100); //causes error...
int i = 0;
FILE *file = fopen(filename, "r");
while (fgets (line, sizeof line, file)!= NULL)
{
list[i] = line;
i++;
}
return list;
}
int main(int argc, char *argv[])
{
char *p = readFile(argv[1]);
for (int i = 0; i<10; i++)
{
printf("%s", list[i]);
}
return 0;
}
基本上我有一个分配来检查一个包含4列的文本文件,我试图将每一行存储到一个数组中,然后使用strtok
将每一行分成4个标记。然后我将每个标记存储到一个单独的数组中(以便每列都是一个数组)。然后我将遍历每个阵列并执行所需的操作。但是,我真的坚持这一步。
答案 0 :(得分:1)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char **readFile(char filename[]){
char line[100];
char **list = malloc(100*sizeof(char*));//for 100 lines
int i = 0;
FILE *file = fopen(filename, "r");
while (fgets (line, sizeof line, file)!= NULL && i < 100){
list[i] = malloc(strlen(line) + 1);
strcpy(list[i], line);
++i;
}
fclose(file);
return list;
}
int main(int argc, char *argv[]){
char **list = readFile(argv[1]);
for (int i = 0; i<10; i++){
printf("%s", list[i]);
}
//deallcate list[i], list
return 0;
}