c 语言初学者 说出这个数字问题vs运行后无输出?


#include <stdio.h>
#include <string.h>
 
const char *num[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
 
int main()
{
    char ch, number[10];
    int s = 0, i;
    while( (ch = getchar()) != '\n' )
    {
        s += ch-'0';
    }
    sprintf(number, "%d", s);
    printf("%s", num[number[0]-'0']);
    for ( i=1; i<strlen(number); i++ )
    {
        printf(" %s", num[number[i]-'0']);
    }
    printf("\n");
 
    return 0;
}

————————————————
版权声明:本文为CSDN博主「coderstory」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fjinhao/article/details/46853171

img

测试了一下,VS2010输出正常啊

在网站测试时。测试输入的内容可能没有\n换行符,while(中要加 ch!=EOF)判断是否读取到输入流的结束

while( (ch = getchar()) != '\n' && ch!=EOF)

看一下是不是没保存,没编译,运行之后输入数字再回车

char ch, number[10];这里,改成char ch, number[10] = {0};试试
可能是因为number没有初始化,也就是没有\0这个结束标志,在计算strlen(number)的时候出错了,导致strlen(number)可能是一个无穷大的数。