读取输入字符并以图形格式打印事件

时间:2013-05-20 02:02:06

标签: c

我正在阅读输入并尝试以图形格式打印所有输入的小写字符,能够读取它并跟踪每个字符重复但不能以图形方式打印的时间,可以你帮帮我吧这是我的代码

#include <stdio.h>
#include <ctype.h>
int print_fun(int);
int main()  {
int ch = 0, i = 0;
int char_count[26] = {0};
printf("\nNOTE:PRESS * TO EXIT\n");
while((ch = getchar()) != '*')    {
    if(islower(ch))
        char_count[ch - 'a']++;
}
printf("\n");
for(i = 0; i < 26; i++)
    //printf("%c:%d\n",'a'+ i, char_count[i]);
    //printf("%c:\n", 'a'+ i, print_star(char_count[i]));
    printf("%c:\n",print_star(char_count[i]),'a'+ i);
printf("\n");
return 0;
}
int print_star(int value)  {
int i = 0;
for(i = 0; i < value; i++)
printf("*");
}

o / p:aaxyyz

a:**
b:
c:
...
...
x:*
y:**
z:*

2 个答案:

答案 0 :(得分:1)

您的printf来电缺少格式参数,您有:

printf("%d:%c\n",print_star(char_count[i]),'a'+ i);

但是你将两个参数传递给printf,据我所知,这就是你的意思:

printf("%d:%c\n",print_star(char_count[i]),'a'+ i);

此外,print_star的返回值为int,但您没有return语句,我认为您打算返回i,在这种情况下您应该添加:

return i ;

最后。最后没有返回的行为是未定义的。最后,看起来你在前向声明中有一个拼写错误,这个:

int print_fun(int);

应该是:

int print_star(int value );

答案 1 :(得分:1)

#include <stdio.h>
#include <ctype.h>

//int print_fun(int);
void print_star(int);

int main(void){
    int ch = 0, i = 0;
    int char_count[26] = {0};
    printf("\nNOTE:PRESS * TO EXIT\n");
    while((ch = getchar()) != '*'){
        if(islower(ch))
            char_count[ch - 'a']++;
    }
    printf("\n");
    for(i = 0; i < 26; i++){
        printf("%c:",'a'+ i);
        print_star(char_count[i]);
        printf("\n");
    }
    printf("\n");
    return 0;
}

void print_star(int value){
    int i = 0;
    for(i = 0; i < value; i++)
        printf("*");
}