2014-10-30 74 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; 

你的代码会短得多。