2013-06-21 2 views
15

В настоящее время у меня есть эта программа, которая печатает текстовый файл на консоли, но каждая строка имеет дополнительную новую строку под ней. если текст былC puts() без новой строки

привет мир

он будет выводить привет

мир

код этого

#include <iostream> 
#include <stdio.h> 
#include <string.h> 
using namespace std; 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
    FILE* fp; 
    char input[80], ch = 'a'; 
    char key[] = "exit\n"; 
    int q; 

    fp = fopen("c:\\users\\kostas\\desktop\\original.txt", "r+"); 

    while (!feof(fp)) { 
     fgets(input, 80, fp); 
     puts(input); 
    } 
    fclose(fp); 

    return 0; 
} 

ответ

8

puts() добавляет символ новой строки в спецификации библиотеки , Вы можете использовать вместо printf, где вы можете контролировать то, что печатается со строкой формата:

printf("%s", input); 
+0

о боже, как же я не видел, что .... спасибо! – Constantine

+7

Это «% s» вместо того, чтобы просто использовать «printf (input)»; имеет решающее значение, чтобы любые процентные знаки во входных данных не разбивали вашу программу. –

+3

вызов printf с «% s» менее эффективен, чем fputs, но вам, вероятно, все равно – portforwardpodcast

26

Обычно можно было бы использовать fputs() вместо пут(), чтобы опустить символ новой строки. В вашем коде,

puts(input); 

стал бы:

fputs(input, stdout); 
+1

Вы также можете использовать printf(), но с небольшим количеством дополнительных накладных расходов :-) –

+0

Я рад, что нашел этот ответ, так как я не хотел иметь накладные расходы 'printf' –