Игнорирование разрывов строк в C - PullRequest
1 голос
/ 14 февраля 2009

Я пытаюсь написать код, который читает файл и игнорирует разрывы строк (\ n), пока у меня есть:

c = fgetc(fp);
for(int loop = 0; c != EOF; loop++)
{
    if((c != '\n') && (c != '\\'))
    {
        buffer[loop] = c;
    }
    c = fgetc(fp);
}

но, похоже, просто игнорировать биты '\ n' (не уверен насчет '\')

И извините за компоновку кода, сайту не нравится моя версия Opera: (

Edit: Спасибо, ребята, я кодировал код около 6 часов подряд и полностью пропустил приращение, поэтому я подумал, что \ n остался на месте.

Я также не знал о Linux, но пытался создать кроссплатформенность, поэтому это полезно.

Ответы [ 2 ]

8 голосов
/ 14 февраля 2009

попробуйте

while ( (c = fgetc(fp)) != EOF )
{
  if ( c != '\n' && c != '\r' )
  {
    buffer[loop++] = c;
  }
}
6 голосов
/ 14 февраля 2009

В какой операционной системе вы это используете? \ n в Windows - это два символа (\ r \ n). Если вы хотите игнорировать только новые строки, второе условие не требуется.

Но другая проблема заключается в том, что вы увеличиваете переменную цикла каждый раз ! Вы должны увеличивать цикл только тогда, когда добавляете вещи в буфер! Уберите «loop ++» из for (..) и добавьте его в буфер [loop ++] = c ;. Скорее всего, вы получите случайные символы в буфере вместо '\ n': s, которые могут быть нулями, например.

...