gpt4 book ai didi

c - 通过循环将数组传递给 "isalpha"

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

我从事此工作已经有一段时间了,现有的答案几乎没有帮助。我是编程新手,正在尝试编写我的程序的一个子部分,它试图检查任何给定的输入是否仅由字母组成。

为此,我想到的想法是通过使用一次传递每个字符的循环将整个数组传递给 isalpha 函数。这个想法在逻辑上是有道理的,但我在实现它时遇到了句法问题。我将不胜感激任何帮助!

下面是我的代码-

printf("Please type the message which needs to be encrypted: ");
string p = GetString();

for (int i = 0, n = strlen(p); i < n; i++)
{
if(isalpha(**<what I'm putting here is creating the problem, I think>**) = true)
{
printf("%c", p[i]);
}

}

最佳答案

你应该修改你的代码(假设你自己定义了字符串类型):

printf("Please type the message which needs to be encrypted: ");
string p = GetString();

for (int i = 0, n = strlen(p); i < n; i++)
{
if(isalpha(p[i]) == true) // HERE IS THE ERROR, YOU HAD =, NOT ==
{
printf("%c", p[i]);
}

}

运算符=是赋值运算符,运算符==是比较运算符!

那么发生了什么?无论 p[i] 是什么,赋值结果为真。

正如昆汀提到的:

if(isalpha(p[i]) == true)

如果这样写会更优雅和错误修剪:

if(isalpha(p[i]))

这是一个 C 语言的例子:

/* isalpha example */
#include <stdio.h>
#include <ctype.h>

int main(void)
{
int i = 0;
char str[] = "C++";
while (str[i]) // strings in C are ended with a null terminator. When we meet
// the null terminator, while's condition will get false.
{
if (isalpha(str[i])) // check every character of str
printf ("character %c is alphabetic\n",str[i]);
else
printf ("character %c is not alphabetic\n",str[i]);
i++;
}
return 0;
}

Source

Ref isalpha() 的。

C does not have a string type .

提示:下次按原样发布您的代码!

另外,正如 Alter 注意到的那样,使用它会很好:

isalpha((unsigned char)str[i])

在你的代码中

isalpha((unsigned char)p[i])

safety reasons .

关于c - 通过循环将数组传递给 "isalpha",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24009010/

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