C 如何从文件中删除我不知道该行确切位置的行?
你好。我的程序有点问题。该计划应根据会员选择的选项,向俱乐部添加会员或将其从俱乐部中删除。此人的信息将存储在一个文件中。但是,我的问题是,如果他们选择该选项,如何从文件中删除此人及其信息。案例2将处理程序的这一部分。我只提示他们在案例中输入自己的名字,因为我知道会进行一些比较。我非常感谢能帮我解决这个问题的人。提前谢谢。以下是程序代码:C 如何从文件中删除我不知道该行确切位置的行?,c,string,file,stdio,C,String,File,Stdio,你好。我的程序有点问题。该计划应根据会员选择的选项,向俱乐部添加会员或将其从俱乐部中删除。此人的信息将存储在一个文件中。但是,我的问题是,如果他们选择该选项,如何从文件中删除此人及其信息。案例2将处理程序的这一部分。我只提示他们在案例中输入自己的名字,因为我知道会进行一些比较。我非常感谢能帮我解决这个问题的人。提前谢谢。以下是程序代码: #include <stdio.h> #include <conio.h> #include <errno.h> int
#include <stdio.h>
#include <conio.h>
#include <errno.h>
int PrintMenu();
int PrintMenu(){
printf ("=============================================\n");
printf (" 4-H Membership Menu\n");
printf ("=============================================\n\n");
printf ("Choose which option you want to operate.\n");
printf ("1. Become a member of the club.\n");
printf ("2. Leave the club.");
printf("\n\n");
printf("=============================================\n\n");
}
int CaseFunc();
int CaseFunc(){
FILE *clubFile;
char *fname[28];
char *lname[28];
int age;
int menuANS;
char ans;
char ans1;
int x;
printf("Enter your answer here: ");
scanf(" %d", &menuANS);
switch (menuANS){
case 1:
system("cls");
printf ("Enter your first name: ");
scanf ("%s", fname);
printf("\n");
printf ("Enter your last name: ");
scanf ("%s", lname);
printf("\n");
printf ("Enter your age: ");
scanf ("%d", &age);
system("cls");
Next:
printf ("A memebership fee of $1000 is to be paid to become a member.\n");
printf ("Do you want to continue signing up?\n");
printf ("[y/n only]: ");
scanf (" %c", &ans);
system("cls");
if (ans == 'y'){
printf ("Are you sure? Information will be updated to the system.\n[Note: A fee of $1000 is to be paid.]\n");
printf ("[y/n only]: ");
scanf (" %c", &ans1);
if (ans1 == 'y'){
if ((clubFile = fopen("4-H Information.txt", "a+")) == NULL){ //If the file path is incorrect, an error message is displayed
fprintf(stderr, "Error while opening file (%d: %s)\n",errno, strerror(errno)); //Error message that will be displayed if file path is incorrect
return;
}
fprintf (clubFile, "First Name Last Name Age\n");
fprintf (clubFile, "%s %s %d", fname, lname, age);
fclose(clubFile);
printf("\n\n");
printf ("*You are now a member of the 4-H society.*\n");
}
else if (ans1 == 'n'){
system("cls");
main();
}
}
else if (ans == 'n'){
printf ("Are you sure? All your information will be lost.\n");
printf ("[y/n only]: ");
scanf(" %c", &ans1);
if (ans1 == 'y'){
system("cls");
main();
}
else if (ans1 == 'n'){
system("cls");
goto Next;
}
}
break;
case 2:
printf("Enter your first name: ");
scanf("%s", fname);
printf("\n");
printf("Enter your last name");
scanf("%s", lname);
break;
default:
printf ("Invalid entry of menu option.");
break;
}
}
int main (void){
PrintMenu();
CaseFunc();
getch();
return 0;
}
您不能从文件中删除任何内容,因为您需要用某些内容替换腾出的空间。正确的做法是有一个输出文件,您将复制输入文件中除删除文件外的所有数据,然后用输出文件替换输入文件;int打印菜单{/*函数*/}。非常彻底。是的,在定义之前的原型设计很有趣。你可以简单地映射错误,然后移动删除的部分。可能比打开第二个文件要快。或者……天哪,不可能……只需要使用真正的数据结构就可以了。