2015-02-28 2 views
0

Я довольно новичок в программировании на C, и у меня проблемы с моим кодом. Моя программа открывает файл .txt и сохраняет данные внутри него в строке. После этого данные, хранящиеся в строке, копируются в другой .txt-файл.Как не перейти к следующей строке файла в c

FILE * fp = fopen("New.txt", "a"); 
FILE * fp2 = fopen("File.txt", "r"); 
while(fgets(str, 100, fp2) != NULL) { 
    fputs(str, fp); 
} 
fclose(fp); 
fclose(fp2); 

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

One Two Three 

Что мой код делает:

One 
Two 
Three 

Можете ли вы мне помочь? Заранее спасибо.

ответ

2

fgets читает строку, но сохраняет символ новой строки в конце. Когда вы пишете строку, эта новая строка также печатается. Вы можете удалить символ новой строки в явном виде, например:

int len = strlen(str); 

if (len && str[len - 1] == '\n') str[len - 1] = '\0'; 

В качестве альтернативы, вы можете выбрать другой подход: Прочитайте файл символьного мудр getc и распечатать все символы, кроме новых линий с putc. (Этот подход работает, только если вы не хотите делать другие вещи, требующие, чтобы вы знали содержимое каждой строки.)

+0

У меня всегда было это сомнение: лучше ли делать 'len' с типом' size_t 'а не' int', поскольку 'strlen' возвращает' size_t'? –

+1

Ну, 'size_t', вероятно, лучший выбор здесь: длина может быть только нулевой или положительной, а также возвращаемое значение' strlen'. –

+0

Итак, 'size_t == unsigned int'? –

Смежные вопросы