在while循环中同时使用isalpha和toupper会给出“索引超出范围”

想要的东西

这是给出错误的代码 "index -65 out of bounds for type 'int [26]'"

char x;
int a[26] = {0};

printf("Enter first word: ");
while ((x=(isalpha(toupper(getchar())))) != '\n')
{
    a[x-'A']++;
}

而如果我将其更改为此

char x;
int a[26] = {0};

printf("Enter first word: ");
while ((x=((toupper(getchar()))) != '\n')

    if (isalpha(x))
    {
        a[x-'A']++ ;
    }

它表现得很理想,错误消失了。在导致错误的第一个错误中我做错了什么?

甲肾上腺素

错误消息显示index -65,因此x-'A'ina[x-'A']必须为-65。的ASCII值为'A'65(给定)x-65 = -65,其解析为x = 0

为什么x = 0呢?

因为x是的结果isalpha,所以返回布尔值。特别是,它返回0错误

此外,将此布尔值与进行比较也没有意义'\n'

你的意思是

while (isalpha(x = toupper(getchar())))

请注意,您的代码无法EOF正确处理EOF不是char,这就是为什么要getchar返回int将其结果分配给将x丢失信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python:在while/for循环中列出超出范围的索引

for循环中的索引超出范围(重复)

for循环中的索引超出范围

IndexError:在while循环中超出范围

使用 While 循环列出超出范围的索引

在Python的while循环中追加列表会出现错误消息“列表索引超出范围”

词法分析器的构造,While循环中的字符串索引超出范围,

在循环中发送请求时索引超出范围

.for循环中的数组索引超出范围异常

IndexError:在 readlines() 循环中列出超出范围的索引

C# UWP 索引在 for 循环中超出范围

在简单的 python for 循环中列出索引超出范围错误

Python If 语句在 for 循环中 - 列出索引超出范围

使用 IMAPClient 在列表循环中的 for i 中列表索引超出范围?

While循环-IndexError:列表分配索引超出范围

while循环-IndexError:列表索引超出范围

列出超出范围的 while 循环索引

While 循环输出列表索引超出范围

For 循环中使用的超出范围的下标

利用“ isalpha”或“ startswith”和/或对“列表索引超出范围错误”进行故障排除

UICollectionView给出“索引超出范围”错误

使用ParallelFor循环时索引超出范围异常

索引和列表 - 索引超出范围

为什么我需要指定此列表的大小,否则会给出列表索引超出范围错误

Python for循环:索引超出范围错误

列表索引超出范围与条件循环

Python 循环:索引超出范围错误

C#for循环。索引超出范围

For循环错误:列表索引超出范围