當我使用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;
}
您是否嘗試通過調試器逐步調試display_menu()?交換機中「選擇」的價值是什麼? (注意,**請**閱讀http://stackoverflow.com/editing-help瞭解如何格式化您的帖子的說明。) – 2011-04-02 20:38:38
如果您沒有投射malloc的結果,編譯器會抱怨它是沒有定義,因爲你沒有'#include'd'stdlib.h'。 – dmckee 2011-04-02 20:39:47
您可以在'case 1'中添加一張照片,看看您是否曾經到過那裏... – MByD 2011-04-02 20:42:42