C проблема: программа завершает себя - PullRequest
0 голосов
/ 02 июня 2019
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>


char choice;
struct {
    char name[20];
    int rn;
}read,write;

void wr(){
    FILE *fp;
    fp = fopen("record.txt","a+");
    printf("Enter Your Name: ");
    scanf("%s",write.name);
    printf("Enter Your Roll Number: ");
    scanf("%d",&write.rn);

    fprintf(fp,"%s\t%d",write.name,write.rn);

    fclose(fp);

    menu();
}
void rd(){
    FILE *fp;
    fp = fopen("record.txt","r");
    while(fscanf(fp,"%s %d",read.name,&read.rn)!= EOF){
        printf("%s\t%d\n",read.name,read.rn);
    }

    fclose(fp);
    getche();
    menu();
}

void menu(){
    system("cls");
    printf("Do you want to read/write/exit the data R/W/E: ");
    scanf("%c",&choice);
    tolower(choice);

    if(choice == 'w'){
        wr();
    }
    else if(choice == 'r'){
        rd();
    }
    else if(choice == 'e'){
        exit(1);
    }
}

int main() {

    menu();
    getche();
    system("cls");
    return 0;
}

Я хочу прекратить его, когда пользователь вводит 'e', ​​но он завершается после каждого ввода информации, а также после того, как я читаю данные.

Имеется в виду после того, как каждая функция чтения или записи сработает, и программа должна снова запросить выбор, который она прекращает.

1 Ответ

0 голосов
/ 02 июня 2019

Вам необходимо использовать цикл for или while, например:

int main() 
{
while(1) // while true
{
    menu();
    getche();
    system("cls");
}
return 0;
}

Вы уже звоните exit(1) в своем else if из menu(), поэтому добавьте while(true), и он будет работать так, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...