将字符串元素与 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 *
其中 info
是 char*
,s
是 char 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;
}
我正在为考试编写 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 *
其中 info
是 char*
,s
是 char 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;
}