检查变量在C中是字符串还是整数
我正在写一个C程序,我必须通过命令行读取参数。 如何检查传递给程序的参数是字符串(即字符数组)还是整数? 在C语言中有没有即时呼叫 如何检查传递给程序的参数是字符串(即字符数组)还是整数 命令行参数总是作为字符串传递给C程序。由您自己决定一个参数是否代表一个数字检查变量在C中是字符串还是整数,c,C,我正在写一个C程序,我必须通过命令行读取参数。 如何检查传递给程序的参数是字符串(即字符数组)还是整数? 在C语言中有没有即时呼叫 如何检查传递给程序的参数是字符串(即字符数组)还是整数 命令行参数总是作为字符串传递给C程序。由您自己决定一个参数是否代表一个数字 int is_number(char const* arg) { // Add the logic to check whether arg is a number // The code here can be simpl
int is_number(char const* arg)
{
// Add the logic to check whether arg is a number
// The code here can be simple or complex depending on the
// level of checking that is necessary.
// Should we return true or false if the argument is "1abc"?
// This is a very simple test.
int n;
return (sscanf(arg, "%d", &n) == 1);
}
int main(int argc, char** argv) // argv is array of strings.
{
int i = 0;
for ( i = 1; i < argc; ++i )
{
if ( is_number(argv[i]) )
{
// Use the argument.
}
}
}
int是字符数(字符常量*arg)
{
//添加逻辑以检查arg是否为数字
//这里的代码可以是简单的,也可以是复杂的,具体取决于
//必要的检查级别。
//如果参数为“1abc”,我们应该返回true还是false?
//这是一个非常简单的测试。
int n;
返回值(sscanf(参数、%d、&n)==1);
}
int main(int argc,char**argv)//argv是字符串数组。
{
int i=0;
对于(i=1;i
您可以对字符串的每个字符调用isdigit()
,如果它对所有字符都是真的,则有一个整数,否则它就是一些字母数字字符串
您还可以调用
strtol
将字符串解析为整数。第二个参数返回指向字符串中第一个非数字字符的指针。如果它指向第一个字符,则它不是整数。如果它指向末尾,则为整数。如果它在中间某个点,它是一个整数,后面是一个非数字字符序列。由命令行传递的< P>参数总是字符串,如果要检查这个字符串是否可以转换成整数,则可以使用<代码> Strtol < /C> >:< /P>
char *ptr = argv[1];
long num;
num = strtol(ptr, &ptr, 10);
if (*ptr == '\0')
/* arg is a number */
else
/* arg is NOT a number */
您可以尝试检查所有字符串是否都在0-9之间的数字范围内。例如,请检查此程序:
#include <stdio.h>
int checkString(char *Str)
{
char *ptr = Str;
while( *ptr )
{
// check if string characters are within the range of numbers
if( ! (*ptr >= 0x30 && *ptr <= 0x39 ) )
{
return 0;
}
ptr++;
}
return 1;
}
int main(int argc,char *argv[])
{
// does argv[1] consist entirely of numbers ?
if( checkString(argv[1]) )
{
/* if it does , do something */
puts("success");
}
else
{
/* do something else */
}
return 0;
}
#包括
int校验字符串(char*Str)
{
char*ptr=Str;
while(*ptr)
{
//检查字符串是否在数字范围内
如果(!(*ptr>=0x30&&&ptr,它将始终是一个字符串。除非你的意思是它必须只包含字母表;没有数字或符号。为什么要写0x30和0x39来表示从0到9的字符?另外,这种方式独立于体系结构和实现吗?这是一篇老文章。我不记得确切的原因了!