当我使用display_menu
函数调用read_txt_file()
时,它不起作用。我无法将文件内容提供给标准输出,但是当我直接使用read_txt_file()
时,它可以正常工作。我可以在stdout中看到该文件的内容。 display_menu有什么问题?
#include <stdio.h>
typedef struct filename
{
int age;
char name[100];
}name_t;
name_t * fname=NULL;
void quit()
{
printf("\nPress enter to exit");
fflush(stdin);
getchar();
}
enter(char prompt[])
{
puts(prompt);
fflush(stdin);
getchar();
}
void read_txt_file()
{
char ch;
fname=(name_t *)malloc(sizeof(name_t));
FILE *fptr=NULL;
atexit(quit);
printf("Please enter the file name to read : ");
fflush(stdin);
scanf("%s",fname->name);
fptr=fopen(fname->name,"r");
if(fptr == NULL)
{
perror("Could not open the file ");
return;
}
printf("+++++++++++++++++++++++++++++++++++++++++++++++++");
printf("Contents of the file %s are : ",fname->name);
**while(ch != EOF)
{
ch=fgetc(fptr);
printf("%c",ch);
}**
enter("press enter");
fclose(fptr);
}
display_menu()
{
int choice;
while(1)
{
system("cls");
printf("\t\t1.read and display from a file\n \
\b2.quit\n");
scanf("%d",&choice);
switch(choice)
{
case 1 :
read_txt_file();
break;
case 2 :
exit(0);
default :
printf("please enter proper choice(1-3)\n Enter to continue");
fflush(stdin);
getchar();
}
}
}
int main()
{
/*
read_txt_file();
*/
**display_menu();**
return 0;
}
答案 0 :(得分:0)
scanf(“%d”,&amp; choice)之后;调用时,输入仍然会有一个'\ n'(您按下的返回选项之一)。因此文件名将为空。您可以在阅读选项后添加getchar()(删除'\ n')。