2016-01-03 2 views
1

привет, поэтому у меня есть программа, где, если есть @ в начале первой строки текстового файла, ее нужно игнорировать, как вы переходите к следующей строке файла ? игнорируя все, что есть после @? , например:перейти к следующей строке файла, игнорируя содержание

@1234 
5 

Я хочу напечатать 5, а остальные будут проигнорированы.

мне удалось пропустить @ если нет ничего за ним

while (a == '@' || a == '\r'|| a == '\n') {    
    fscanf(inp, "%c", &a);    
} 

ответ

0

Вместо

while (a == '@' || a == '\r'|| a == '\n') {    
    fscanf(inp,"%c",&a);    
} 

Try (псевдо код):

If FirstChar == '@' 
    Loop/scan until '\n' 

On nextline here 

Если вы хотите использование fscanf().

Если требуется более высокая производительность, работайте с буферами напрямую.

+0

@chqrlie - Да, был tinking то же самое, печатая это на самом деле - я Удалите его. Картирование памяти также работает с Windows с помощью CreateFileMapping(). –

0

Что касается вашего предыдущего вопроса, если хотите, чтобы игнорировать строки комментария с начальным @, это высоко рекомендуется прочитать файл построчно с fgets() и обработки недостающих строк комментариев непосредственно, игнорируя строки комментариев.

На самом деле это не так, как это сделать с fscanf, потому что в зависимости от ваших линий форматирования линия может быть или не потребляться.

Если вы находитесь в начале строки и хотите, чтобы прочитать следующий символ, игнорируя строки комментариев, сделать это:

int c; // Must be int to accommodate for EOF. 

while ((c = getc(inp)) == '@') { 
    while ((c = getc(inp)) != EOF && c != '\n') 
     continue; 
} 

// Here c contains the first char from a non comment line or EOF. 
Смежные вопросы