заменить
if( (fp=fopen("/User/don/Vim/code.c", "at+")) == NULL ){
printf("Cannot open file\n");
}
от
if( (fp=fopen("/User/don/Vim/code.c", "at+")) == NULL ){
printf("Cannot open file\n");
return 0;
}
иначе вы будете использовать нулевой указатель после fputs(str, fp);
как говорит Jabberwocky получает опасно, потому что вы можете переполнить буфер, более безопасно использовать fgets
конечно, вы также можете выполнять свою работу в else
ветке:
#include <stdio.h>
#include <string.h>
int main(){
FILE *fp;
char str[120] = {0}, strTemp[100];
if( (fp=fopen("/User/don/Vim/code.c", "at+")) == NULL ){
printf("Cannot open file\n");
}
else {
printf("Input a string:");
fgets(strTemp, sizeof(strTemp), stdin);
strcat(str, "\n");
strcat(str, strTemp);
fputs(str, fp);
fclose(fp);
}
return 0;
}