So Lesen Sie eine Datei, bis ein Zeichen in C

So habe ich diese input-Datei:

1 2 3 4 5 6 7
3 2 4 1 6 5 7
***
1 1 2
1 1 2
***end of input***

Ich Scannen möchte, die ersten zwei Zeilen von zahlen, die dann etwas mit Ihnen, dann überspringen Sie die * und Scannen Sie die nächsten Zeilen von zahlen, und etwas mit Ihnen zu tun, als auch (wie eine Schleife, bis es liest *).

Wie konnte ich das tun? Hier ist mein code:

int main(){
int i = 0, j ;
int temp[100];
char c, buf[20];
FILE *fp;
fp = fopen("input.txt", "r");
    if (fp != NULL){

            while (1 == fscanf(fp, "%d ", &temp[i])){
                i++;
            }   
                            //do something with the integers
    }
    else{
        printf("Cannot open File!\n");   
    }

return 0;
}

Also das problem ist, ich kann nur scan-die ersten zwei Linien der zahlen. Ich will scan die ganzen zahlen nach der * als gut.

  • was ist das Letzte Zeichen?
  • Was ist genau das problem Auftritt?
  • Es klingt wie Sie brauchen, um (a) fügen Sie den code nach dem 'etwas tun' - Zeile auf Zeilen mit Sternen (wie Lesen es mit fgets()), und dann wickeln Sie eine weitere Schleife um die while, die "etwas tun" und "munch ' stars' code zu wiederholen, bis ein EOF-Zeichen. Im Idealfall sollten Sie die Datei schließen, nachdem Sie begegnet EOF. Es ist wahrscheinlich auch sinnvoll, entfernen Sie das Leerzeichen nach dem %d im format-string — die Gründe sind vielschichtig, aber nachfolgende Leerzeichen gibt böse Verhalten, um interaktive Programme im besonderen.
  • Das problem ist, ich kann nur scan-die ersten zwei Linien der zahlen. Ich will scan die nächsten ganzen zahlen nach dem * wie gut. @JonathanLeffler Könnte mir helfen, und bieten einen code für, die? Für eine while-Schleife
  • Was hindert Sie, das hinzufügen einer äußeren while-Schleife rund um Ihren aktuellen while-Schleife und "etwas tun" - code, wiederholen Sie den Vorgang? "Könnte mir helfen, und bieten einen code für das?" - Das ist wirklich nicht das, was SO geht.
Schreibe einen Kommentar