c - 使用 fwrite 函数在 C 中写入 txt 文件

标签 c file fwrite

我正在尝试从 vector 创建一个 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 变量),每行应该存储 vector 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, ...

您正在传递一个 float 组作为文件,并传递一个大小作为格式字符串。

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

尝试使用 gcc -Wall -Wextra -Werrorclang -Weverything -Werror 等内容编译代码。它根本不会编译,编译器会告诉你(一些)出了什么问题。

关于c - 使用 fwrite 函数在 C 中写入 txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788915/

相关文章:

file - 无需回车即可读取 Gideros 上的行

Android:共享下载的文件

c++ - fwrite 比 Windows 中的 WriteFile 快吗?

c - 为什么 fread 不起作用?

c - 用 C 写入输出文件

c - 哪些文件系统支持通过 Linux 的 splice(2) 进行拼接?

c - 如何使用是/否提示进行重复?

c - 如何获取 SHA1 函数的最后 64 位?

C GPA 平均总分

Java InputStreamReader 无法读取特殊(土耳其语)字符