我在这里已经有相当一段时间了,现有的答案几乎毫无帮助。我是编程新手,我正试图写我的程序的一个子部分,试图检查是否有任何给定的输入是由字母组成。
为此,我的想法是通过使用一次传递每个字符的循环,通过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的。
C does not have a string type。
提示:下次按原样发布代码!
Aslo,正如Alter注意到的,最好使用:
isalpha()
在你的密码里
isalpha((unsigned char)str[i])
对于safety reasons。