Эта программа работает и выполняет то, что вы сказали: добавьте 10 символов (sizeof(strng)
) в файл, включая \0
и остальную часть массива. Измените sizeof
на strlen
.
Кроме того, вы должны не только печатать «проблему», когда вы не можете открыть файл, но и не записывать в него.
И последняя проблема в вашем коде - вы объявили main
как возвращающую int
, но завершаете программу без установки кода возврата. Если вы правильно завершили программу, всегда возвращайте EXIT_SUCCESS
.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUF_SIZE 10
char buf[BUF_SIZE];
int main(int ac, char **av) {
FILE *my_file;
strncpy(buf, "abc", BUF_SIZE-1);
buf[BUF_SIZE-1] = '\0';
my_file = fopen("myfile", "a+");
if (my_file == NULL) {
fprintf(stderr, "problem opening file\n");
return EXIT_FAILURE;
} else {
fwrite(buf, strlen(buf), 1, my_file);
printf("appending %s\n", buf);
fclose(my_file);
return EXIT_SUCCESS;
}
}