将字符串元素与 ASCII 值进行比较

Compare string element to ASCII value

我正在为考试编写 C 程序,但遇到了一些问题。 例如,在这个练习中:

char y = 'a';

if (y >= 65)
    printf("MAJOR");

或:

char a[] = "bare";

if (a[0] >= 65)
    printf("MAJOR");

我真的很想打印 MAJOR 但我总是出错。

我的目标是查看我的 char 数组的元素是否主要或等于指定的 ASCII 值(65'A')。

我还得到了一个实际上需要在 char 数组中移动的指针:我怎样才能滚动它直到 '[=19=]'

我试过:

for (i = 0 ; &p->info[i] != '[=12=]' && &s[i] != '[=12=]'; i++)
                     // the info field of this struct is type char *

其中 infochar*schar s[]

这个for循环可以吗?

编辑:新一期

这真的很奇怪,我在尝试 运行 这行代码时遇到了一个一般性错误:

char y = 'a';

我的 'y' 变量似乎用下划线填充而不是 'a'.....? 我现在正在使用 Xcode

我相信,如果您要检查空终止,则需要更改

  &p->info[i] != '[=10=]' && &s[i] != '[=10=]'

 (p->info[i] != '[=11=]') && (s[i] != '[=11=]')

因为,[=13=] 是一个 ,而不是 地址


编辑:

我还不是很确定,但也许你想实现如下所示的目标。它搜索整个 array 的 CAPS 字母,如果找到一个则打印 "MAJOR"。

伪代码:

char arr[] = "bAre";
int len = strlen(arr);
for (int counter = 0; counter < len; counter++)
{
       if ( (arr[counter] >= 'A') && (arr[counter] <= 'Z'))  //need ending condition also
            printf("MAJOR\n");
}

这里要注意:如果不限制检查在'Z''a'的值也满足>= 65.

首先,小写字母大于大写字母,'a'(97)大于'A'(65),看来你的代码中,'a'也是一个'MAJOR'.

所以如果你想得到一个'MAJOR',你应该使用

char y = 'a';

if (y >= 'A' && y <= 'Z')
{
    printf("MAJOR");
}

接下来,info是char*,s是char s[],需要改一下

&p->info[i] != '[=11=]' && &s[i] != '[=11=]'

(p->info[i] != '[=12=]') && (s[i] != '[=12=]')

因为,

\0 是一个值,不是地址...

infor[i] 和 s[i] 都是 char...

你也可以这样做-

#include <stdio.h>

int main()
{


char arr[] = "bAre";
int i;
        for (i = 0; arr[i] != '[=10=]' ; i++)
        {
            if ( (arr[i] >= 65) && (arr[i] <= 90)) {  //need ending condition also
                    printf("%c-",arr[i]);
                    printf("MAJOR\n");
            }
        }
    return 0;
}