2017-05-08 3 views
0

Ich bin wirklich neu in C++, in der Tat, das ist mein erstes Projekt und das ist mein erstes Mal mit C++ zu spielen.C++ Konsole - Suchen Sie einen Client nach einer bestimmten Nummer

Ich habe diese Struktur:

typedef struct { 
    char nome[50]; 
    char morada[100]; 
    char codpostal[8]; 
    char localidade[25]; 
    int telefone; 
    int nContribuinte; 
} CLIENTE; 

ich diesen f = fopen("PSI.dat", "wb"); bin mit dem ich die Informationen gespeichert halten. Dies ist, wie ich hinzufügen Info es:

FILE *f; 
int i, x; 
CLIENTE Clt; 

// ler dados 
printf("   Nome: "); cin >> Clt.nome; 
printf("   Morada: "); cin >> Clt.morada; 
printf("  Cod-Postal: "); cin >> Clt.codpostal; 
printf("  Localidade: "); cin >> Clt.localidade; 
printf(" No Contribuinte: "); cin >> Clt.nContribuinte; 
printf("  Telefone: "); cin >> Clt.telefone; 

// gravar no ficheiro 
fwrite(&Clt, sizeof(Clt), 1, f); 
fclose(f); 

Frage: Wie suche ich PSI.dat für eine bestehende Clt.nContribuinte dass Benutzer fragt in scanf("%d",&i);

+2

Als erstes müssen Sie die C-Ismen fallen lassen! 'FILE *', 'printf',' fopen', 'typedef struct',' char [] '..yikes. Welches C++ Buch verwendest du? –

+0

@BoundaryImposition ist ernsthaft korrekt. –

+0

da dies für ein Schulprojekt ist muss ich irgendwie diese verwenden ... keine andere Option –

Antwort

0

Sie wollen etwas wie diese, werden Sie wahrscheinlich muss es etwas zwicken.

Dies ist eine C++ - Lösung, keine C-Lösung. @ BoundaryImpositions Bemerkungen sind absolut korrekt und rechtfertigen ein Umdenken des Problems, das zu den Idiomen, Ausdrucksmöglichkeiten und Möglichkeiten der Sprache passt, die Sie lernen.

Haftungsausschluss: Ich schreibe C++ oft nicht.

+1

Das ist einfach perfekt! Ich brauchte nur diese "while" -Schleife für mein Problem. Eine kleine Sache, "line" muss "int line" sein, weil "criteria.nContribuinte" ein ganzzahliger Wert ist. Ich bekomme die Zeilennummer, wo die Information gefunden wird und benutze 'fseek (f, i * sizeof (CLIENTE), SEEK_SET);' und 'fread (& Clt, sizeof (CLIENTE), 1, f); Information. Es funktioniert :) Danke Kumpel –

+0

Fixed zu verwenden int. Vermeiden Sie fseek. Froh, dass ich helfen konnte. –

Verwandte Themen