C 如何将文本文件中的各行保存到数组中?
我在上C和C语言的编程课 我正试图为一个程序制作一本带有符号和字母的字典,例如a=?,B=!等等 字母及其定义的符号保存在一个文本文件中,每一个都在一行中,以便: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
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
,不会有什么坏处。