我在这里已经有相当一段时间了,现有的答案几乎毫无帮助。我是编程新手,我正试图写我的程序的一个子部分,试图检查是否有任何给定的输入是由字母组成。
为此,我的想法是通过使用一次传递每个字符的循环,通过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

10-08 00:26