2012-01-28 3 views
3

Quel est l'équivalent de cin.peek() pour la programmation C? J'ai besoin de scanner les fichiers pour '/ r' et '/ r/n' (ce sont les marqueurs de fin de ligne pour les fichiers DOS) donc je dois "jeter un coup d'oeil" au caractère suivant si le caractère courant est un '/ r 'C équivalent à C++ cin.peek()

Merci!

+2

Ce sont des marqueurs de fin de ligne sur les systèmes Windows modernes, pas seulement "vieux DOS". – Wyzard

+3

J'espère que vous comprenez la différence entre une barre oblique et une barre oblique inverse si vous voulez faire de la programmation orientée caractère ... –

Répondre

1

Comme alternative à lire + ungetc(), vous avez pu lire votre personnage de fichier par caractère et sauter simplement inutile « \ r » et/ou « \ n » ou d'effectuer tout autre traitement spécial de ceux-ci. Une machine d'état triviale peut aider.

0

essayer:

char c; 
FILE *fp; 
// opening file, etc. 
if((c = getc(fp)) == '\r') 
    ungetc(c, fp); 

ou:

char c; 
FILE *fp; 
// opening file, etc. 
fread(&c, sizeof(char), 1, fp); 
if(c == '\r') 
{ 
    fseek(fp, -1L, SEEK_CUR); 
    fwrite(&c, sizeof(char), 1, fp); 
} 

si vous avez besoin de lire deux valeurs (comme "\ n \ r"), vous pouvez utiliser un court pour le stockage, et le test avec sa valeur numérique