gpt4 book ai didi

c - C语言中如何将函数结果保存到文本文件中

转载 作者:行者123 更新时间:2023-11-30 20:26:55 24 4
gpt4 key购买 nike

该函数打印带“*”的单词长度,称为直方图。如何将结果保存到文本文件中?我尝试过,但程序没有保存结果。(没有错误)

void histogram(FILE *myinput)
{
FILE *ptr;
printf("\nsaving results...\n");
ptr=fopen("results1.txt","wt");

int j, n = 1, i = 0;
size_t ln;
char arr[100][10];

while(n > 0)
{
n = fscanf(myinput, "%s",arr[i]);
i++;
}

n = i;
for(i = 0; i < n - 1; i++)
{
ln=strlen(arr[i]);
fprintf(ptr,"%s \t",arr[i]);
for(j=0;j<ln;j++)
fprintf(ptr, "*");

fprintf(ptr, "\n");
}

fclose(myinput);
fclose(ptr);
}

最佳答案

我发现有两种方法可以解决这个问题:

  1. 在程序中打开文件并写入内容。
  2. 如果使用命令行运行,请更改标准输出的输出位置

    $> ./histogram > outfile.txt

使用“>”将更改标准输出的写入位置。 “>”的问题是它会截断文件然后写入该文件。这意味着如果该文件之前有任何数据,那么它就会消失。只有程序写入的新数据才会在那里。

如果需要保留文件中的数据,可以更改标准输出以在文件后附加“>>”,如下例所示:

$> ./histogram >> outfile.txt

此外,“>”和文件名之间不必有空格。我这样做只是出于偏好。它可能看起来像这样:

$> ./histogram >outfile.txt

如果写入文件是一次性的事情,那么更改标准输出可能是最好的方法。如果您每次都这样做,请将其添加到代码中。

您将需要打开另一个文件。您可以在函数中执行此操作,或者像读取文件一样将其传入。

使用“fprintf”写入文件:

int fprintf(FILE *restrict stream, const char *restrict format, ...);

您的程序可能会添加以下行来写入文件:

FILE *myoutput = fopen("output.txt", "w"); // or "a" if you want to append
fprintf(myoutput, "%s \t",arr[i]);

回答完成

我现在可能还会讨论一些其他问题。

您的直方图函数没有返回标识符。 C 会自动将其设置为“int”,然后说您没有该函数的返回值。根据您提供的内容,我会在函数名称之前添加“void”。

void histogram {

arr 的第二组数组的大小可能太小。可以假设您正在读取的文件每个标记不超过 10 个字符,以在字符串末尾包含空终止符 [\0]。这意味着字符串中最多可以有 9 个字符。否则,您的位置将会溢出,并可能会弄乱您的数据。

编辑

以上内容是在更改所提供的代码之前编写的,现在包含第二个文件和 fprintf 语句。

我将指向打开输出文件的行:

ptr=fopen("results1.txt","wt");

我想知道您是否打算将“w+”放在第二个字符是加号的位置。根据手册页,有六种可能性:

The argument mode points to a string beginning with one of the following sequences (possibly followed by additional characters, as described below):

   r      Open text file for reading.  The stream is positioned at the
beginning of the file.

r+ Open for reading and writing. The stream is positioned at the
beginning of the file.

w Truncate file to zero length or create text file for writing.
The stream is positioned at the beginning of the file.

w+ Open for reading and writing. The file is created if it does
not exist, otherwise it is truncated. The stream is
positioned at the beginning of the file.

a Open for appending (writing at end of file). The file is
created if it does not exist. The stream is positioned at the
end of the file.

a+ Open for reading and appending (writing at end of file). The
file is created if it does not exist. The initial file
position for reading is at the beginning of the file, but
output is always appended to the end of the file.

因此,您似乎正在尝试打开该文件进行读写。

关于c - C语言中如何将函数结果保存到文本文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23452347/

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