writeData () должен вызывать fwrite (buf, ...), а не fwrite (& buf, ...)

у выходные файлы отличаются, когда я использую fwrite в другой функции VERSUS fwrite в той же функции?

output1.txt содержит значение мусора типа Ê, что НЕ является правильным

output2.txt содержит «b», что правильно

#include <stdio.h>
#include <string.h>

void writeData(char *buf, char *path) {
    FILE *fp1;
    fp1 = fopen(path, "a");
    fwrite(&buf, sizeof(char), strlen(buf), fp1);
}

int main () {


    char buf[2] = "a";
    char buf2[3] = "yb";
    char file1_path[12] = "output1.txt";
    char file2_path[12] = "output2.txt";
    memset(buf, 0, sizeof(buf));
    memcpy(buf, &buf2[1], strlen(buf2));
    printf("%s\n", buf);

    writeData(buf, file1_path);

    FILE *fp2;
    fp2 = fopen(file2_path, "a");
    fwrite(&buf, sizeof(char), strlen(buf), fp2);

   return(0);
}

Ответы на вопрос(1)

Ваш ответ на вопрос