for循环的编码帮助

Coding help for for loop

{

char ch;
int count, lineCount;
count = 0;
lineCount = 0;

printf("Please enter one alphabet\n");

for (lineCount = 0; (ch = getchar()) != '\n'; lineCount++)
{
    putchar(ch-'0');
        printf("\n");

    for (count = 0; count <= (ch - '0'); count++)
        printf("%c \n", ch);
}


return 0;
}

到目前为止,这是我的代码。以后我需要做更多的事情,但我一次只迈出一步。所以我会输入一封信。例如,d。 我把那个 putchar 放在那里以检查 ch-'0' 是否等于我想要的数字。确实如此。 d 为 4。 所以理论上,我认为这段代码会打印 d 4 次。但实际上,它打印了 30-40 次。 其他任何字母都一样。它打印了 40 次。另外,计数无效。我用 5 初始化它,它显然大于 4。它仍然打印了 40 次。 我没有太多使用 for 循环。我知道这个概念,但我可能犯了一个巨大的 C 语言错误。 这里有什么问题吗??


哈哈好吧我只复制了重要的部分。我有主要的。 4 不是 'd' - '0' 的整数值吗?这就是它在 putchar 语句中打印出来的内容,我实际上尝试将其更改为 int,但没有任何区别。好吧,并不是说你错了。显然我是那个错误的人。但那是我背后的想法。 拜托,你能解释一下它背后的物流以及我应该做什么吗?

嗯,基于 Please enter one alphabet,您可以将 for 循环减少到

for (lineCount = 0; (ch = getchar()) != '\n'; lineCount++)
{
        putchar(ch);
        printf("\n");

        printf("From Printf: %c \n", ch);
}

注:ch - '0'通常用于获取字符数字的整数值,'0''9'.

'd' - '0' 不是 4。如果您参考 ASCII 图表,您会看到 'd' 的十进制值为 100,'0' 的值为十进制是 48,所以我希望内部循环重复 100-48 = 52 次。

由于您执行了 putchar,它向输出发送了一个具有十进制值 52 的字节,恰好对应于 ASCII 字符“4”。

请注意,如果您键入“4”而不是 'd',您应该会看到它循环 4 次。

基本问题是定量值与给定字符集中值表示之间的关系。