int new_acc(char *name, size_t namesize)
Измените на:
int new_acc(FILE * fp, char *name, size_t namesize)
Затем, когда вы вызываете эту функцию в main:
new_acc(fp, name, sizeof name);
Вы должны проверить возвращаемое значение fopen
:
fp = fopen("/home/Documents/file.txt","w");
if(!fp) {
// handle the error.
}
Вы должны переместить fclose(fp)
из этой функции.
OT, вы должны изменить тип:
int one='1', two='2';
на char one='1', two='2';
, потому что вы сравниваете эти переменные с char
значение.
Обновлено для вопроса в комментарии:
#include <stdio.h>
#include <stdlib.h>
#define MAX 15
int new_acc(FILE *fp, char *name, size_t namesize);
int main(){
FILE *fp;
fp = fopen("file.txt","w"); /* this is fp */
if(!fp) {
printf("cannot open the file");
return -1;
}
char one='1', two='2';
char choice[MAX], name[15] = "";
char all_accouts[100][15];
int i = 0;
do{
printf("%c. Create new account\n",one);
printf("Enter your choice: ");
fgets(choice, sizeof choice, stdin);
if (choice[0] == one)
{new_acc(fp, all_accouts[i], sizeof(all_accouts[i])); i++;}
}
while(two != choice[0]);
for(int j = 0; j < i; j++) {
printf("%s\n", all_accouts[j]);
}
fclose(fp);
return 0;
}
int new_acc(FILE *fp, char *name, size_t namesize) {
printf("Enter your name: ");
fgets(name, namesize, stdin);
fputs(name, fp);
return 0;
}
результат теста:
1. Create new account
Enter your choice: 1
Enter your name: name1
1. Create new account
Enter your choice: 1
Enter your name: name2
1. Create new account
Enter your choice: 2
name1
name2