【发布时间】:2019-12-11 00:00:19
【问题描述】:
我被困住了。这几天一直在努力。我需要验证输入到argv[1] 的每个字符都是一个数字,但我尝试了isdigit、isalpha、char、atoi 转换但没有任何成功。我在编码方面还是新手。我很沮丧并删除了所有内容以重新开始,但这就是我现在所处的位置。
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
int main(int argc, string argv[])
{
if (argc == 2)
{
for (int k = 0; k <strlen(argv[1]); k++)
{
printf("Success!\n");
printf("%s\n", argv[1]);
}
}
else
{
printf("Usage: ./caesar key\n");
}
}
这是我以前的位置。每次尝试运行此程序时,我都会收到一个清理错误:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
include <ctype.h>
#include <stdlib.h>
int main(int argc, string argv[])
{
if (isdigit(argv[1]))
{
if(atoi(argv[1]))
{
if (argc == 2)
{
for (int x = 0; x < strlen(argv[1]); x++)
{
printf("Success!\n");
printf("%s", argv[1]);
}
}
}
}
else
{
printf("Usage: /caesar key\n");
}
}
任何帮助将不胜感激!
【问题讨论】:
-
isdigit仅适用于单个char。您可以使用isdigit遍历整个字符串。 -
想想你做事的顺序......在第二个例子中,你检查是否有参数(即
argv[1]是有效的)在你使用那个参数之后。 -
if (isdigit(argv[1]))正在检查地址是否为char数字。 -
当你写“每个输入到 argv[1] 的字符都是一个数字”时,你的意思是 argv[1] 中的每个字符都必须是一个数字吗?
-
您如何编写一个函数
int all_digits(char *s);来查看字符串中的每个字符,如果所有字符都是数字则返回 1(又名真),如果不是数字则返回 0(又名假)?