gpt4 book ai didi

c - 打印输入流中每个字母的出现

转载 作者:太空宇宙 更新时间:2023-11-04 00:30:56 24 4
gpt4 key购买 nike

我有以下代码来计算输入字符串中每个字母的出现次数。 while 循环正确执行。现在我有了 arr[],其中包含 arr[0] 中“a”的数量,arr[1] 中“b”的数量等等。

但是,下面的printf并没有显示arr的完整内容。 (下面给出了示例 o/p)。

如果我完全注释掉 while 循环,printf 会打印所有 26 个 arr[] 值!这个简单的程序可能缺少什么?

如果有帮助,我正在使用 VS 2008。

int arr[26]={'\0'};
int i = 0, c = 0, idx = 0, count = 0;
while( (c = getchar()) != EOF ) {
if( 'a' <= c && 'z' >= c ) {
idx = c - 'a';
arr[idx] = arr[idx]+1;
}
}
for(count = 0; count < 26; count++) {
printf("arr[%d] = %d\n", count, arr[count]);
}

我得到的输出(随着输入的不同而变化):

abcxyz
arr[0] = 1
arr[1] = 1
^CPress any key to continue . . .

abcabc
arr[0] = 2
arr[1]
^CPress any key to continue . . .

@Nobilis:更新代码以说明大写字母,也使打印更有意义:)

int main()
{
int arr[26]={'\0'};
int i = 0, c = 0, idx = 0, count = 0;
while( (c = getchar()) != EOF )
{
if( 'a' <= c && 'z' >= c )
{
idx = c - 'a';
arr[idx] = arr[idx]+1;
}
if( 'A' <= c && 'Z' >= c )
{
idx = c - 'A';
arr[idx] = arr[idx]+1;
}
}
for(count = 0; count < 26; count++)
{

printf("%c or %c = %d\n", ('A'+count), ('a'+count), arr[count]);
}
}

最佳答案

当你想结束输入字符时,在 linux 上按 CTRL-D,在 windows 上按 CTRL-Z 而不是 CTRL-C

CTRL-C 终止程序,因此不会进行更多处理,您也不会看到输出。

关于c - 打印输入流中每个字母的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17760336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com