12至23行運行。但是在添加if語句時實際上並沒有運行。它會編譯並運行。它詢問第一個printf語句,然後在我選擇一個字符時終止。爲什麼會發生這種情況,我該如何解決。爲什麼這個代碼編譯但不能實際工作?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch, file_name[25];
FILE *fp;
printf("Enter [A] and select file or [X] to exit:"); // Prompt user to select file or exit
scanf("%c",&ch);
scanf("%c",&ch);
if (ch=='A')
{
printf("Enter the file name\n"); // if user chooses 'A' this code should run
gets(file_name);
fp = fopen(file_name,"r"); // reading file
if(fp == NULL)
{
perror("File not found.\n");
exit(EXIT_FAILURE);
}
printf("Contents of %s are:\n", file_name);
while((ch = fgetc(fp)) != EOF)
printf("%c",ch);
}
else if (ch=='X')
{
printf("Exiting program...");
exit(0);
}
}
爲什麼應該編譯代碼實際上工作?非語法錯誤代碼並不意味着它沒有邏輯錯誤 –