2012-01-28 7 views
3

Что такое cin.peek() для программирования на C? Мне нужно сканировать файлы для '/ r' и '/ r/n' (это конец маркеров линий для файлов DOS), поэтому мне нужно «заглянуть» вперед к следующему символу, если текущий символ равен '/ r 'C эквивалент C++ cin.peek()

Спасибо!

+2

Это маркеры конца строки на современных системах Windows, а не только «старые DOS». – Wyzard

+3

Надеюсь, вы понимаете разницу между косой чертой и обратной косой чертой, если вы хотите сделать характерно-ориентированное программирование ... –

ответ

1

В качестве альтернативы для чтения + ungetc(), вы можете прочитать свой характер файла по характеру и просто пропустить ненужный «\ г» и/или «\ п» или выполнить любую другую специальную обработку тех. Тривиальная машина состояний может помочь.

0

попробовать:

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

или:

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); 
} 

, если вам нужно прочитать два значения (как "\ п \ г"), вы можете использовать короткий для хранения его, а тест с его числовым значением