有关我的目标的详细信息
在C语言中,我的程序应该从命令行获取输入,读取它,确保它是一个数字,然后如果输出为true,则输出“成功”,如果为false,则输出“用法:./ caesar key”。
预期成绩
./caesar 33
Success
要么
./caesar zzz
Usage: ./caesar key
实际结果
./caesar 33
Segmentation error
我尝试过的
int main (int argc, string argv[])
{
if (argc == 2)
{
if (isdigit(argv[1]))
{
printf("Success\n");
return 0;
}
要么
if (argc == 2)
{
if (isdigit(argv[0][1]))
{
printf("Success\n");
return 0;
}
要么
int main (int argc, string argv[])
{
if (argc == 2 && isdigit(argv[1]))
{
printf("Success\n");
return 0;
}
如果不需要使用该isdigit
函数,则可以使用@Param Siddharth建议的strspn函数。但是,它们是使用
if (strspn(string, "-+0123456789") == strlen(string))
例如,like这样的值"-----"
将被视为有效数字。
如果要使用该isdigit
函数,则需要遍历Stringchar
中的所有s (而不是一次传递整个String),并检查其中每个是否确实是一个数字:
...
int i, is_number = 1;
for (i = 0; is_number && argv[1][i] != '\0'; i++){
if(i == 0 && (argv[1][i] == '-' || argv[1][i] == '+')){
continue;
}
is_number = isdigit(string[i]);
}
// It should fail for Strings that are : empty, only "-" or "+"
if(i == 0 || (i == 1 && !isdigit(argv[1][0])) || !is_number){
printf("The String is not a Number \n");
return 1;
}
printf("Success\n");
return 0;
}
我测试了输入:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句