使用 fwrite 函数在 C 语言中写入 txt 文件



我正在尝试从向量创建一个 txt 文件,但我的 txt 文件充满了代码下方的垃圾值:

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

int main(void)
{
int i,j,k;
float x,v[15],aux=0;
FILE *arq;
arq = fopen("base.txt", "wt");
if (arq == NULL)
{
printf("errorn");
return;
}
srand( (unsigned)time(NULL) );
for (j =0; j < 50; j++) {
for (i = 0; i < 15; i++)
{
x = (rand() % 100);
x = x/100;
printf("%.2f t", x);
v[i] = x;
}
for (k=0; k<15; k++){
aux += v[k];
}
if (aux > 0 && aux < 3)  {
v[15] = 0.25;
} else if (aux > 3 && aux < 7) {
v[15] = 0.5;
} else if (aux > 7 && aux < 12) {
v[15] = 0.7;
} else {
v[15] = 1;
}
fprintf(v, sizeof(v), 50, arq);
}
}

我的文件的正确输出应该是 50 行(j 变量(,每行应该存储来自矢量 v[] 的值,间隔如下:

1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.0 0.1 0.3 0.4 0.25

此问题是由于 fwrite 函数引起的吗?

你的fprintf()电话是荒谬的:

fprintf(v, sizeof(v), 50, arq);

fprintf()的论据是:

FILE *stream, const char *format, ...

您传递的浮点数组作为 FILE,并将大小作为格式字符串传递。

如果你的代码可以编译,这意味着你的编译器要么禁用了所有重要的警告,要么你忽略了这些警告,或者你的编译器是一个玩具编译器,无法诊断明显损坏的代码。

尝试使用gcc -Wall -Wextra -Werrorclang -Weverything -Werror之类的东西编译代码。 它根本不会编译,编译器会告诉你(一些(出了什么问题。

最新更新