我对 C 编程很陌生,刚刚开始研究文件。我想知道是否可以将文件逐行(包括每行中的空格)读取到大小等于文件中行数的数组中。我真的不知道从哪里开始,也不知道这是否可能,所以任何指导将不胜感激。
示例
格式为的文本文件:
Computer Programming
Software Engineering
Computer Architecture
写入数组,使得:
char array[4];
array[0] = "Computer Programming";
array[1] = "Software Engineering";
array[2] = "Computer Architecture";
到目前为止我所拥有的是:
int main()
{
char array[50];
bool answer;
FILE *classes;
classes = fopen("classnames.txt", "r");
if(classes == NULL){
printf("\n ************* ERROR *************\n");
printf("\n \"classnames.txt\" cannot be opened.\n");
printf("\n PROGRAM TERMINATED\n");
exit(EXIT_FAILURE);
}
接下来我想将每个类名写入数组的每个元素中。
最佳答案
是的,您只需将 array
声明为 char**
并在读取每一行时动态分配。例如
int MAX_NUM_LINES = 1000;
int MAX_LINE_LEN = 256;
char** array;
malloc(array, MAX_NUM_LINES*sizeof(char*));
fp = fopen(...);
int line_ct = 0;
char line[MAX_LINE_LEN];
while ( fgets(line, MAX_LINE_LEN, fp) != NULL )
{
int len = strlen(line);
malloc(array[line_ct], len * sizeof(char));
strcpy(array[line_ct], line);
line_ct++;
}
我实际上并没有尝试编译此代码,但类似的东西可以工作。您还可以通过首先快速浏览并计算行数来将 MAX_NUM_LINES
替换为实际值 - 这可能会更好。
关于c - 将文件的每一行分配给数组的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28841979/