C puts()没有换行符

时间:2013-06-21 15:17:59

标签: c file newline 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;
}

3 个答案:

答案 0 :(得分:40)

通常会使用fputs()而不是puts()来省略换行符。在你的代码中,

puts(input);

会变成:

fputs(input, stdout);

答案 1 :(得分:9)

puts()按库规范添加换行符。您可以使用printf,在那里您可以控制使用格式字符串打印的内容:

printf("%s", input);

答案 2 :(得分:0)

您还可以编写自定义的 puts 函数:

#include <stdio.h>

int my_puts(char const s[static 1]) {
    for (size_t i = 0; s[i]; ++i)
        if (putchar(s[i]) == EOF) return EOF;

    return 0;
}

int main() {
    my_puts("testing ");
    my_puts("C puts() without ");
    my_puts("newline");

    return 0;
}

输出:

testing C puts() without newline