|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- void StuInput()
- {
-
- char choice;
- FILE *fp;
- fp = fopen("C:\\Users\\yyp\\Desktop\\text1.txt","a+");
- if(fp == NULL)
- {
- printf("Error!\n");
- exit(0);
- }
-
- printf("***********Student Record System***********\n");
- printf("Please input num: ");
- scanf("%d",&stu.num);
- printf("Please input name: ");
- scanf("%s",stu.name);
- printf("Please input age: ");
- scanf("%d",stu.age);
- fprintf(fp,"%d %s %d\n",stu.num,stu.name,stu.age);
- fclose(fp);
-
- printf("Continue to input? y or n ");
- fflush(stdin);
- scanf("%c",&choice);
- if(choice == 'y')
- {
- StuInput();
- }
- }
复制代码
输入完第一轮数据之后,就卡壳了
不出现这个printf("Continue to input? y or n ");然后就直接结束
本帖最后由 jackz007 于 2021-3-12 11:48 编辑
此句有错
得改成这样
- scanf("%d" , & stu . age) ;
复制代码
没必要用递归
- void StuInput()
- {
- . . . . . .
- if(choice == 'y')
- {
- StuInput(); // 这是递归吗?
- }
- }
复制代码
这是我修改的代码
- #include <stdio.h>
- void StuInput(char fn[])
- {
- char name[64] ;
- int num , age ;
- FILE * fp ;
- if((fp = fopen(fn , "a+"))) {
- printf("\n") ;
- printf("***********Student Record System***********\n") ;
- for(;;) {
- printf("Please input num name age : ") ;
- scanf("%d%s%d" , & num , name , & age) ;
- if(num > 0) fprintf(fp , "%d %s %d\n" , num , name , age) ;
- else break ;
- }
- fclose(fp) ;
- } else {
- fprintf(stderr , "\n") ;
- fprintf(stderr , "Can't open input file : %s\n" , fn) ;
- fprintf(stderr , "\n") ;
- }
- }
- void StuPrint(char fn[])
- {
- char name[64] ;
- int num , age ;
- FILE * fp ;
- if((fp = fopen(fn , "r"))) {
- printf("\n") ;
- printf("***********[ %s ]***********\n" , fn) ;
- fscanf(fp , "%d %s %d" , & num , name , & age) ;
- for(; ! feof(fp) ;) {
- printf("%d %s %d\n" , num , name , age) ;
- fscanf(fp , "%d %s %d" , & num , name , & age) ;
- }
- fclose(fp) ;
- } else {
- fprintf(stderr , "\n") ;
- fprintf(stderr , "Can't open input file : %s\n" , fn) ;
- fprintf(stderr , "\n") ;
- }
- }
- int main(void)
- {
- char fn[] = "text1.txt" ;
- StuInput(fn) ;
- StuPrint(fn) ;
- }
复制代码
编译、运行实况
- D:\0002.Exercise\C>g++ -o x x.c
- D:\0002.Exercise\C>x
- ***********Student Record System***********
- Please input num name age : 100 abc 18
- Please input num name age : 101 bcd 19
- Please input num name age : 102 cde 20
- Please input num name age : 103 def 21
- Please input num name age : 0 0 0
- ***********[ text1.txt ]***********
- 100 abc 18
- 101 bcd 19
- 102 cde 20
- 103 def 21
- D:\0002.Exercise\C>
复制代码
|
|