Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用fwrite函数在C中编写txt文件_C_File_Fwrite - Fatal编程技术网

使用fwrite函数在C中编写txt文件

使用fwrite函数在C中编写txt文件,c,file,fwrite,C,File,Fwrite,我试图从矢量创建一个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)

我试图从矢量创建一个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);

    }
}
发生此问题是因为fwrite函数吗

您的fprintf呼叫毫无意义:

fprintf(v, sizeof(v), 50, arq);
fprintf的参数包括:

将浮点数组作为文件传递,将大小作为格式字符串传递

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


尝试使用gcc-Wall-Wextra-Werror或clang-Weverything-Werror之类的工具编译代码。它根本不会编译,编译器会告诉您一些错误。

打开文件时使用wt,fprintf向其写入文本。使用fprintf和wt,我的代码只运行第一个for循环的一次迭代。txt文件现在是空白的。如果您希望输出是可读的,而不是二进制的,请使用fprintf一次打印出数组中的每个元素。@Shawn现在是空白文件,甚至连ET现在都无法读取。哦,您还可以写入数组的末尾,因此,可能会发生各种不好的事情。此外,不会打印换行符,\n因此不会有50行expected@Bwebb:当然没有打印换行符,根本没有打印任何内容的有效调用,也没有任何格式字符串。显然,OP只是用fprintf替换了fwrite这个词,并将代码推到我们身上,而没有试图修复它。
fprintf(v, sizeof(v), 50, arq);
FILE *stream, const char *format, ...