запись в текстовый файл на C с помощью функции fwrite - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь создать текстовый файл из вектора, но мой текстовый файл заполнен значениями мусора, расположенными ниже кода:

  #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?

1 Ответ

0 голосов
/ 13 октября 2018

Ваш fprintf() вызов не имеет смысла:

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

Аргументы fprintf():

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

Вы передаете массив с плавающей точкой в ​​качестве ФАЙЛА, иsize как строка формата.

Если ваш код компилируется вообще, это означает, что ваш компилятор либо отключил все свои важные предупреждения, либо вы игнорируете эти предупреждения, либо ваш компилятор является игрушечным компилятором, который не может диагностировать явно неисправныйcode.

Попробуйте скомпилировать свой код, например, gcc -Wall -Wextra -Werror или clang -Weverything -Werror.Он не будет компилироваться вообще, и компилятор скажет вам (некоторые из), что не так.

...