Вот столкнулась с такой вещью:
есть текстовый файл, конец строки там обозначен только символом "\r", для fgets же признак конца строки — "\n", соответсвенно сейчас при чтение все строки лепятся воедино и получается одна большая строчище, что меня никак не устраивает...Что делать? Как-то ведь это наверняка обходится?
Здравствуйте fikka, Вы писали:
F>Вот столкнулась с такой вещью:
F>есть текстовый файл, конец строки там обозначен только символом "\r", для fgets же признак конца строки — "\n", соответсвенно сейчас при чтение все строки лепятся воедино и получается одна большая строчище, что меня никак не устраивает...Что делать? Как-то ведь это наверняка обходится?
Можно например заменить в файле или в буфере все символы '\r' на "\n\r".
Здравствуйте Slayer, Вы писали:
S>Здравствуйте fikka, Вы писали:
F>>Вот столкнулась с такой вещью:
F>>есть текстовый файл, конец строки там обозначен только символом "\r", для fgets же признак конца строки — "\n", соответсвенно сейчас при чтение все строки лепятся воедино и получается одна большая строчище, что меня никак не устраивает...Что делать? Как-то ведь это наверняка обходится?
S>Можно например заменить в файле или в буфере все символы '\r' на "\n\r".
Можно отказаться от использования fgets, а читать побайтно. Вот, примерно так (набросал не глядя):
FILE* f = fopen("filename.fileext","r");
if(f) {
char cBuff[1024]; // буфер под строку
char cCh = 0;
int iCntr = 0;
while( !feof(f) ) {
if(fread(&cCh,1,1,f)) {
if(iCntr<1023) {
if(cCh!='\r' && cCh!='\n') cBuff[iCntr] = cCh;
}
if(cCh=='\r' || cCh=='\n') {
cBuff[iCntr+1] = '\0'; // все, в буфере очередная строка
}
iCntr++;
} else break;
}
fclose(f);
}
Код, конечно, кривой, но главное — это принцип