【发布时间】:2023-03-04 06:53:02
【问题描述】:
我正在学习 C(困难的方式)并尝试编写一个根据参数数据类型打印一行的函数(简单练习)。
#include<stdio.h>
#include<ctype.h>
int main( int argc, char *argv[] )
{
int i = 0;
for(i = 0; i < argc; i++){
if(isalpha((int)argv[i]) ) //this line produces a warning
{
printf("I am alpha.\n");
}
}
return 0;
}
这会在编译时产生警告(并且在执行时不执行任何操作):
cast to smaller integer type 'int' from 'char *' [-Wpointer-to-int-cast]
cmets 后更新 我正在比较梨和苹果:字符串与 int,它们的字节数不同。所以问题是:我如何编写数据比较 if 语句,就像在 ruby 中一样:
a = "5"
if a.instance_of? String
# do something
end
【问题讨论】:
-
你想
isalpha((int)argv[i])是什么意思?argv[i]是一个字符串,而isalpha将one 字符作为参数。 -
一个指针是 8 个字节,而一个 int 是 4 个字节。所以警告告诉你你丢失了演员表中的信息。
-
我认为
strings在 c 中不存在,因为它们是字母数组。 -
@thiebo,在 c 中用字符串来理解,它们是字符数组。
-
@thiebo
argv[i]总是是一个 C 风格的字符串。你不需要检查那个。 C 程序只能并且总是将命令行参数作为字符串获取
标签: c