gpt4 book ai didi

c - 从文件中读取并将输出打印到文件

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:54 25 4
gpt4 key购买 nike

我知道这是您读取文件的方式。我还想将我的输出打印到同名文件加上“.txt”。因此,如果我的文件名为“text”,我想将其打印到名为“text.txt”的文件中。

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main(int argc, char* argv[1])
{
FILE* Data2;
Data2 = fopen(argv[1], "r");
if (Data2 == NULL)
{
printf("ERROR");
exit(100);
}

return 0;
}

会是这样吗?在 fopen 中使用“a”或“w”更好吗?我想写几次。

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main(int argc, char* argv[1])
{
FILE* Data2;
FILE* Data3;
Data2 = fopen(argv[1], "r");
Data3 = fopen(argv[1].txt, "a");
if (Data2 == NULL)
{
printf("ERROR");
exit(100);
}
fprintf(Data3, "\n Print something \n");
fprintf(Data3, "\n Print something \n");
fprintf(Data3, "\n Print something \n");

return 0;
}

最佳答案

argv[1] 是一个字符串。 .txt 语法并不意味着将 .txt" 附加到它。

但是,您可以通过创建一个具有足够大小(使用 strlen 计算)的新缓冲区并将两个字符串粘贴到那里来做到这一点

char *fname = calloc(strlen(argv[1]) + 5, sizeof(fname[0])); /* +5 to have space for .txt and terminator */
strcpy(fname, argv[1]);
strcat(fname, ".txt");
Data3 = fopen(fname, "a");

或者,如果可以并且想要使用 GNU 扩展而不是 POSIX 标准,您可以使用 asprintf:

char *fname = NULL;
asprintf(&fname, "%s.txt", argv[1]);
Data3 = fopen(fname, "a");

现在,关于文件的打开,重要的是在您发出 fopen 调用的那一刻:如果您传入 "a",那么打开文件将保留在那里。如果您传入 "w",则上述内容将被删除。在这两种情况下,您都可以将多个内容写入文件。

关于c - 从文件中读取并将输出打印到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23184087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com