ibilalkayy Ответов: 1

Как записать данные несколько раз на одном временном запуске?


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define STRING_LEN 200

int new_acc(FILE * fw, char *name, int *dob, int *id);
int i;
char one='1', two='2', choice[STRING_LEN], option;
static const char * listing[] = {"Name", "Date of birth","ID card number"};

int main(){
	FILE * fw = fopen("fiile.csv","a");
	int dob[STRING_LEN], id[STRING_LEN];
	char name[STRING_LEN];

do{
	while(two != choice[0]){
		printf("%c. Create new account\n",one);
		printf("%c. Update information\n",two);

		printf("Enter your choice: ");
		fgets(choice, STRING_LEN, stdin);          

		if (choice[0] == one){
			new_acc(fw, name, dob, id);
			break;
		}
		else if (choice[0] == two){
			printf("Selected Two\n");
			break;
		}
		else{
			printf("Please enter the correct information.\n");
			break;
		}
	} // End of while loop

	printf("Go to the main menu [y/n]: ");
	scanf("%s", &option);
	while (getchar() != '\n') continue;
  }
  while (option == 'y');

  return 0;
}

int new_acc(FILE * fw, char *name, int *dob, int *id){
	char data[8][STRING_LEN];
  do{
    for (i = 0; i < 3; i++) {
      printf("Enter your %s: ", listing[i]);
      fgets(data[i], STRING_LEN, stdin);
      while(strcmp(data[i], "\n") == 0){
        fgets(data[i], STRING_LEN, stdin);
      }
      data[i][strlen(data[i])-1] = '\0';
    }

    fprintf(fw, "%s,%s,%s\n", data[0], data[1], data[2]);
    printf("Insert Data Again [y/n]: ");
  	scanf("%s", &option);
  }
  while(option == 'y');

  fclose(fw);
return 0;
}


Что я уже пробовал:

В этом коде всякий раз, когда я пытаюсь создать новую учетную запись и ввести информацию. В конце концов, это дает мне возможность Перейдите в Главное меню... Я нажимаю y чтобы продолжить и попытаться снова создать новую учетную запись. На этот раз данные не записываются в файл. Всякий раз, когда я выхожу из программы и снова начинаю писать, она работает. Но проблема не в письменном виде. Вместо этого в той же запущенной программе он не записывает данные в файл

1 Ответов

Рейтинг:
12

OriginalGriff

Если вы посмотрите на конец вашего new_acc функция, вы увидите почему:

fclose(fw);

Так как файл закрывается после первой записи и открывается только в начале main вторая и последующие записи всегда будут неудачными.


ibilalkayy

Спасибо братан

OriginalGriff

Всегда пожалуйста!

CPallini

5.