2014-10-30 71 views
0

嗨,我對編程比較陌生,所以請耐心等待。如何在C中打印?

我想作一個程序,它在輸入bcdefghijklmnopqrstuvwxy和輸出

else if (c == 'x') 
    ++nx; 

其中x是輸入的一個字母,和其中重複對輸入的每個字母的輸出。

這是我至今寫:

#include <stdio.h> 

main() { 

    int c; 

    while((c = getchar()) != EOF) { 
     printf("else if (c == '%d')\n", c); 
     printf("\t++n%d;\n", c); 
    } 

    return 0; 
} 

而不是返回我想要的輸出,輸出的是

else if (c == '98') 
    ++n98; 
else if (c == '99') 
    ++n99; 
else if (c == '100') 
    ++n100; 
else if (c == '101') 
    ++n101; 
else if (c == '102') 
    ++n102; 
... 

爲什麼c不作爲變量的工作?

非常感謝您的幫助!

+8

' '%D''應該是'' %c''。 – indiv 2014-10-30 20:50:06

+3

如果你正在編寫一個寫另一個程序的程序,你最好有一個很好的理由。這感覺就像你有其他一些需要處理的底層設計問題。 – 2014-10-30 20:51:47

+2

你也可以使用'switch'語句而不是一系列'if-else'使你的代碼更易讀。 – aruisdante 2014-10-30 20:51:56

回答

2

在C中編寫並將格式指向的字符串打印到標準輸出時,您需要確保使用正確的格式說明符。這將確保您的參數格式正確並按照您的預期插入到結果字符串中。

對您而言,您需要使用%c。但是,您目前有%d,這相當於整數的%i。您可以更多地瞭解格式說明符以瞭解有關其他選項的更多信息。

下面是關於這個問題的一個有趣的閱讀:

http://www.codingunit.com/printf-format-specifiers-format-conversions-and-formatted-output

-1

嘗試使用

printf("else if (c == '%c')\n", c); 
printf("\t++n%c;\n", c); 

printf specifiers

的%d說明符是intergers

0

嘗試:

#include <stdio.h> 

main() { 

char c; 

while((c = getchar()) != EOF) { 
    printf("else if (c == '%c')\n", c); 
    printf("\t++n%c;\n", c); 
} 

return 0; 
} 

你想要的是字符不是整數

3

你想c == '%c'通過字符或c == %d(不含雙引號)來比較序數值進行比較,但是你應該學會使用數組。它看起來像你試圖以困難的方式編寫代碼,並使用代碼生成器來爲你節省一些輸入。相反:

int n[256] = {0}; /* storage for counters, initialized to zero */ 

和:

n[c]++; // increment the counter for character c; 

你的代碼會短得多。