尝试打印.txt文件的特定行时出现问题。
文件内容是
1ºAmsterdao
1.1 PDI
Casa de Anne Frank
-Descricao: Museu biografico localizado na cidade de Amsterdao, capital dos Paises Baixos.
-Horario de funcionamento: Abertura*7h Fecho*19h
1.2 PDI
Museu Van Gogh
-Descricao: Museu em Amsterdao, nos Paises Baixos.
-Horario de funcionamento: Abertura*8h Fecho*18h
1.3 PDI
Museu da Heineken
-Descricao: Visita interativa pela historia da conhecida marca numa antiga cervejaria que termina numa sala de degustaçao.
-Horario de funcionamento: Abertura*10h Fecho*19
2ºBangkok
2.1 PDI
Grande Palacio de Bangkok
-Descricao: Conjunto de edificios em Bangkok, Tailandia, que serviu como residencia oficial do rei de Tailandia.
-Horario de funcionamento: Abertura*8h Fecho*15h
。 。
它上升到20º。我要打印的是每行中带有“2ºBangkok”格式的单词的第一个字母。问题是我可以修改该文件,并且可以添加更多的“ PDI”,例如1.4、1.5等。因此无法知道它们之间有多少行。
我要尝试的方法是获取一行的每个字符,使用atoi(),然后将其与我先前打印的行数进行比较,因此仅在数量较大时才打印
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LENGTH 500
int main ()
{
FILE *fp = fopen("save_projeto.txt", "r");
char s[MAX_LENGTH];
int numero;
int numero_2;
while (!feof(fp)) {
fscanf(fp, "%d", &numero);
printf("%d", numero);
fgets(s, MAX_LENGTH, fp);
numero_2 = s[0];
printf("%c\n", s[1]);
while(numero_2 != (numero + 1)){
fgets(s, MAX_LENGTH, fp);
numero_2 = s[0];
atoi(numero_2);
}
}
fclose(fp);
}
我期望的输出是“ 1A \ n 2B \ n 3C ...”,相反,我得到的输出是“ 1A \ n”。
答案 0 :(得分:0)
while (true) {
if (!fgets(str, sizeof(str), fp))
break;
if (sscanf(str, "%d°%c", &n, &c) != 2)
continue;
if (n <= prev)
continue;
printf("%i%c\n", n, c);
prev = n;
}