c - 如何不转到c中的下一行文件

标签 c file line

我是 C 编程的新手,我的代码有问题。我的程序打开一个 .txt 文件并将其中的数据存储在一个字符串中。之后,将存储在字符串中的数据复制到另一个 .txt 文件中。

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

你能帮帮我吗?提前致谢。

最佳答案

fgets 读取一行,但在末尾保留换行符。当您编写该行时,新行也会被打印出来。您可以显式删除换行符,例如:

int len = strlen(str);

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

或者,您可以选择另一种方法:使用 getc 按字符读取文件并使用 putc 打印出除新行之外的所有字符。 (只有当您不想做其他需要知道每一行内容的事情时,这种方法才有效。)

关于c - 如何不转到c中的下一行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28778820/

相关文章:

Python从两个文件中读取嵌套for循环中的行

java - 如何将图库中的图像作为文件参数

iphone - 如何撤消和重做 iPhone 中的平滑线条?

c - 当第三方 C 函数返回一个指针时,你应该自己释放它吗?

c - c中的结构默认值

c - 打印结构的 int 成员变量给出了错误的值

c - C代码怎么写?

java - 处理Java : Prevent selectInput from opening indefinitely

ruby - 如何在 Ruby 中创建文件

algorithm - 基于网格的线路优化