检查字符串是否是c中的数字时出现问题
Problem while checking if a string is a number in c
对于 CS50 class 中的问题,我必须检查密钥是否有效,即用户输入的是否为数字。我尝试了不同的代码,但每次,如果输入中至少有一位数字,则 return 表明密钥是正确的。虽然只有当字符串的所有字符都是数字时它应该是正确的...
#include <cs50.h>
#include <stdio.h>
#include <string.h>
# include <ctype.h>
int main(int argc, string argv[])
{
if (argc !=2)
{
printf("Usage: %s key\n", argv[0]);
return 1;
}
else
{
for (int i = 0; i <= (strlen(argv[1])); i++)
{
if (isalpha(argv[1][i]))
{
printf("Usage: ./caesar key \n");
return 1;
}
else
{
printf("%s\n", argv[1]);
return 0;
}
}
}
}
当输入超过2个字符串时,应该return 1(即有效);
当字符串 [1] 不是数字时,它应该 return 1(这也有效);
当字符串 [1] 是数字时,它应该打印 2 个字符串(不起作用);
例如:我期望 ./caesar 222f 为 return: Usage: ./caesar key, 但实际输出是 222f
您的代码仅检查字符串的第一个字符 - 它总是 return 的结果基于第一个字符是否为数字。
不是在循环中打印成功的结果,而是等待循环遍历所有字符,如果找到非数字字符则只提前 return:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
# include <ctype.h>
int main(int argc, string argv[])
{
if (argc !=2)
{
printf("Usage: %s key\n", argv[0]);
return 1;
}
else
{
for (int i = 0; i <= (strlen(argv[1])); i++)
{
if (isalpha(argv[1][i]))
{
printf("Usage: ./caesar key \n");
// Return early for badly formed argument
return 1;
}
}
// Now that all chars have been validated, print the argument
printf("%s\n", argv[1]);
return 0;
}
}
对于 CS50 class 中的问题,我必须检查密钥是否有效,即用户输入的是否为数字。我尝试了不同的代码,但每次,如果输入中至少有一位数字,则 return 表明密钥是正确的。虽然只有当字符串的所有字符都是数字时它应该是正确的...
#include <cs50.h>
#include <stdio.h>
#include <string.h>
# include <ctype.h>
int main(int argc, string argv[])
{
if (argc !=2)
{
printf("Usage: %s key\n", argv[0]);
return 1;
}
else
{
for (int i = 0; i <= (strlen(argv[1])); i++)
{
if (isalpha(argv[1][i]))
{
printf("Usage: ./caesar key \n");
return 1;
}
else
{
printf("%s\n", argv[1]);
return 0;
}
}
}
}
当输入超过2个字符串时,应该return 1(即有效);
当字符串 [1] 不是数字时,它应该 return 1(这也有效);
当字符串 [1] 是数字时,它应该打印 2 个字符串(不起作用);
例如:我期望 ./caesar 222f 为 return: Usage: ./caesar key, 但实际输出是 222f
您的代码仅检查字符串的第一个字符 - 它总是 return 的结果基于第一个字符是否为数字。
不是在循环中打印成功的结果,而是等待循环遍历所有字符,如果找到非数字字符则只提前 return:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
# include <ctype.h>
int main(int argc, string argv[])
{
if (argc !=2)
{
printf("Usage: %s key\n", argv[0]);
return 1;
}
else
{
for (int i = 0; i <= (strlen(argv[1])); i++)
{
if (isalpha(argv[1][i]))
{
printf("Usage: ./caesar key \n");
// Return early for badly formed argument
return 1;
}
}
// Now that all chars have been validated, print the argument
printf("%s\n", argv[1]);
return 0;
}
}