我正在尝试从矢量创建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("error\n");
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函数而发生此问题?
答案 0 :(得分:2)
您的fprintf()
通话是荒谬的:
fprintf(v, sizeof(v), 50, arq);
fprintf()
的参数为:
FILE *stream, const char *format, ...
您正在传递一个float数组作为FILE,一个size作为格式字符串。
如果您的代码完全可以编译,则意味着您的编译器已禁用了所有重要警告,或者您忽略了这些警告,或者您的编译器是无法诊断明显损坏的代码的玩具编译器。
尝试使用gcc -Wall -Wextra -Werror
或clang -Weverything -Werror
之类的代码进行编译。它根本不会编译,编译器会告诉您(某些)问题所在。