2015-04-12 15 views
-1

我必須編寫一個程序來計算一個字符出現在文件中的次數。 (不區分大小寫......「a」和「A」被認爲是一樣的)編寫一個程序來計算一個字符在文件中出現的次數。 (不區分大小寫......'a'和'A'被認爲是相同的)

 #include<stdio.h> 

    #include<stdlib.h> 

    #include<ctype.h> 

    int main() 

    { 

    FILE *fp1; 

    char ch,f[100],c,d; 

    int ct=0; 

    printf("Enter the file name\n"); 

    scanf("%s",f); 

    fp1=fopen(f,"r"); 

    printf("Enter character:"); 

    scanf(" %c",&c); 

    do 

    { 

    printf("%c",ch); 

    ch=fgetc(fp1); 

    d=toupper(ch); 

    printf("%c",d); 

    if(c==d) 

    ++ct; 

    }while(ch!=EOF); 

    fclose(fp1); 

    printf("\n"); 

    printf("%d",ct); 

    return 0; 

    }` 

這是我寫的程序,但我發現它是輸出..

[a.txt中包含與字符串 AAA]

現在運行程序時,這是我得到的輸出:

輸入文件名

A.TXT

輸入字符:一個

AAAAA

我在做什麼錯在這裏?

+0

後你得到的價值'C'轉換爲大寫 – user7

+0

我需要輸出爲AAAAAA 3 –

+2

是..但是你進入了''然後轉換所有字符文件爲大寫。那麼'a = A'怎麼樣? 。所以將'a'(輸入字符)也轉換爲大寫。 – user7

回答

0

你需要做的是檢查是否要搜索的字符等於到文件或其大寫版本中的字符,如果是,則增加ct

簡單地改變

if(c==d) 

if(c==d || c==ch) 

其他問題:ch未在do...while循環的第一次迭代這裏

printf("%c",ch); 

初始化。通過後

ch=fgetc(fp1); 

也正在上述printf修復它,添加一個檢查,看看是否ch不是EOF在打印之前。

+0

謝謝。它現在有效。 –

0

如果你輸入「A」,並且您將所有的字符TOUPPER()...這可以肯定是不行的;:=)

+0

請幫助我。然後我應該改變 –

+0

添加一個c = c.toUpper()...在你輸入後 –

+0

謝謝。它現在可以工作 –

-1

這段代碼的工作我猜。

#include<stdio.h> 
#include<stdlib.h> 

void main() 
{ 

    FILE *fp1; 
    char c; 
    char ai,s; 
    char fname[20]; 
    int count=0; 

    clrscr(); 
    printf("enter the character to be counted:"); 
    scanf("%c",&ai); 
    s=toupper(ai); 
    printf("enter the file name :"); 
    scanf("%s",&fname); 
    fp1=fopen(fname,"r"); 

    if(fp1==NULL) 
    { 
     printf("cannot open this file"); 
    } 

    do 
    { 
     c=fgetc(fp1); 
     if(c==ai || c==s) 
     { 
      count=count+1; 
     } 
    } 

    while(c != EOF); 
    printf("\nFILE '%s' has %d instances of letter %c",fname,count,ai); 
    getch(); 
} 
+0

請不要只是轉儲你的代碼。解釋你的思路,以便我們理解你的答案。謝謝。 – Cthulhu

相關問題