C 学生信息文件处理
你能帮我改进代码吗。。。这是所有关于学生的信息。。。我的语法有问题。。。在编辑菜单中。。。我尝试使用strcmp,但没有任何效果,我首先使用fgets并将其存储在一个数组中,然后要求用户输入并再次将其存储在另一个数组中。。然后我会比较。。。但是它不起作用。。希望你能帮助我。。。这是我的密码C 学生信息文件处理,c,C,你能帮我改进代码吗。。。这是所有关于学生的信息。。。我的语法有问题。。。在编辑菜单中。。。我尝试使用strcmp,但没有任何效果,我首先使用fgets并将其存储在一个数组中,然后要求用户输入并再次将其存储在另一个数组中。。然后我会比较。。。但是它不起作用。。希望你能帮助我。。。这是我的密码 #include <stdio.h> #include <string.h> #include <stdlib.h> struct student{ cha
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct student{
char name[30];
char id[8];
char course[5];
};
int main(void){
int option =0;
while(option!=6){
system("cls");
printf("Menu:\n");
printf("[1] Add Student.\n");
printf("[2] Display Student.\n");
printf("[3] Delete Student.\n");
printf("[4] Delete Student.\n");
printf("[5] Exit.\n");
scanf("%d",&option);
switch(option)
{
case 1:
addStudent();
break;
case 2:
displayinfo();
break;
case 3:
break;
case 4:
break;
default:
printf("That is not in the options!\nPlease Try again!\n");
break;
}
}
}
addStudent(){
int i;
FILE *stream = NULL;
stream = fopen("studentinfo.txt", "a+");
struct student s1;
struct student array[3];//here i wnt 2 apply d malloc but, still didn't know how 2start
for (i =0; i<1; i++){
printf("Enter Student ID: ");
scanf("%s", s1.id);
fflush(stdin);
printf("Enter Student Name: ");
gets(s1.name);
fflush(stdin);
printf("Enter Student Course: ");
scanf("%s", s1.course);
fprintf(stream, "\n%s,\t%s,\t%s", s1.id, s1.name, s1.course);
}
fclose(stream);
getch();
}
displayinfo(){
FILE *stream = NULL;
stream = fopen("studentinfo.txt", "rt");
char arr[100];
int i=0;
while(!feof(stream)){
fgets(arr, 100, stream);
printf("%s", arr);
}
fclose(stream);
getch();
}
这样行吗
谢谢各位,希望你们能帮我^ ^ ^fgets保持新线。得到的不是。因此字符串永远不会匹配 如果您不完全确定某个功能在做什么,请尝试阅读该功能手册
尝试使用fgetsarr2,100,stdin代替getsarr2。fgets保留新行。得到的不是。因此字符串永远不会匹配 如果您不完全确定某个功能在做什么,请尝试阅读该功能手册 尝试使用fgetsarr2,100,stdin代替getsarr2 使用 feof在读取时不会看到错误,因此可能会挂起循环 使用
feof在阅读时不会看到错误,因此可能会挂起循环这是你的作业吗?然后用“家庭作业”标记你的问题在询问代码是否有效之前,你是否尝试过自己运行代码?整个程序都在运行。。。它已经添加和显示学生信息。。。我有编辑和删除的问题。。。希望您能帮助我:您的菜单有两个相同的选项:printf[3]Delete Student。\n;和printf[4]删除学生。\n;哦我忘记将其更改为[4]编辑信息:这是你的作业吗?然后用“家庭作业”标记你的问题在询问代码是否有效之前,你是否尝试过自己运行代码?整个程序都在运行。。。它已经添加和显示学生信息。。。我有编辑和删除的问题。。。希望您能帮助我:您的菜单有两个相同的选项:printf[3]Delete Student。\n;和printf[4]删除学生。\n;哦我忘记将其更改为[4]编辑信息:不客气。想不想通过单击空箭头并单击0上方的向上箭头来接受答案,以表明您认为这是一个好答案避免在任何情况下,它都是制造缓冲区溢出的魔鬼工具。不客气。想不想通过单击空箭头并单击0上方的向上箭头来接受答案,以表明您认为这是一个好答案避免在任何情况下,它都是创建缓冲区溢出的魔鬼工具。
printf("enter details: ");
gets(arr2);
while(!feof(stream)){
fgets(arr, 100, stream);
if(strcmp(arr, arr2)==0){
//code here
}
}
while(!feof(stream)){
fgets(arr, 100, stream);
while(fgets(arr, 100, stream) != NULL) {
...
}
if (ferror(stream))
printf("error in file" "\n");