我需要在文本文件中存储两个整数,然后是文本行。我通过将每个 int 写在一行中并将每一行文本也写在一个新行中来成功地做到了这一点。然而,为了阅读它,我发现了一些麻烦。我正在这样做:
FILE *f = fopen(arquivo, "r");
char *lna = NULL;
fscanf(f, "%d\n%d\n", &maxCol, &maxLin);
//↑This reads the two ints, works fine in step-by-step
for (;;) {
fscanf(f, "%s\n", &lna);
//↑This sets lna to NULL always, even if there are more lines
if (lna != NULL)
lna[strlen(lna) - 1] = '\0';
if (feof(f))
break;
inserirApos(lista, lna, &atual);
}
fclose(f);
我尝试了几种不同的方法,但它们从未奏效。我知道我可以读取字符串之类的东西,gets 或其他东西,但我认为如果字符串包含空格,就会出现问题。我想知道我正在做的方式是否是最好的,以及它有什么问题。我发现其中一种方法(也不起作用)你必须通过每行的最大长度。如有必要,我知道此信息,这是我之前阅读的 maxCol。