C 如何将文本文件中的各行保存到数组中?

C 如何将文本文件中的各行保存到数组中?,c,arrays,pointers,C,Arrays,Pointers,我在上C和C语言的编程课 我正试图为一个程序制作一本带有符号和字母的字典,例如a=?,B=!等等 字母及其定义的符号保存在一个文本文件中,每一个都在一行中,以便: A ? B ! C = D & 等等 我使用FILE*fPointer和get通过while循环逐行读取和保存, 我想将每一行保存在一个数组中: #include <stdio.h> int main() { FILE * fPointer; fPointer = fopen("symbo

我在上C和C语言的编程课 我正试图为一个程序制作一本带有符号和字母的字典,例如a=?,B=!等等

字母及其定义的符号保存在一个文本文件中,每一个都在一行中,以便:

A ?

B !

C =

D &
等等

我使用
FILE*fPointer
get
通过while循环逐行读取和保存, 我想将每一行保存在一个数组中:

#include <stdio.h>

int main()
{
    FILE * fPointer;
    fPointer = fopen("symbols.txt", "r");
    char line[50];
    char vocab[36];
    while(!feof(fPointer))
    {
        for(int i=0;i<=36;i++)
        {
            fgets(line, 50, fPointer);
            vocab[i] = line;
            printf("%s", vocab[i]);
        }
    }
}
#包括
int main()
{
文件*fPointer;
fPointer=fopen(“symbols.txt”、“r”);
字符行[50];
char-vocab[36];
而(!feof(fPointer))
{

对于(int i=0;i您可以直接使用
fgets
,而不是
feof
,如下所示:

#define LINES 10
#define CHARS 30

char content[LINES][CHARS];
FILE *file;
unsigned int i = 0;
file = fopen("c:\\file.txt", "r");
while ((fgets(content[i], CHARS, file)) != NULL) {
        printf("%s\n", content[i]);
        i++;
}
fclose(file);

你不能只把一个字符串分配给另一个字符串,然后得到一个深度副本,你当然不能把整个
char
数组分配给你从
vocab[i]
得到的单个
char
。因此错误是完全正确的。单个
char
是一个整数,而
char
数组是(或者更确切地说,衰减为)一个指针。我建议研究多维数组和
strcpy()
@screaiking你不应该在(!feof(fPointer))
时使用
。这被认为是非常糟糕的样式,看看Yunnosch发布的链接。而应该使用
while((c=getchar(fPointer))!=EOF的方式
。一个额外的控制表达式,
i
,不会有什么坏处。