CS50凯撒我该怎么做?
我进入CS50已经3周了,我花了一整天的时间试图让atoi工作。我在编译下面的代码时遇到以下错误 我的问题是:CS50凯撒我该怎么做?,c,cs50,caesar-cipher,C,Cs50,Caesar Cipher,我进入CS50已经3周了,我花了一整天的时间试图让atoi工作。我在编译下面的代码时遇到以下错误 我的问题是: 如何表示atoi()函数中的每个字符 如何只打印一次结果?(当我将atoi更改为argv[1]时,循环使其打印argv的次数) 提前感谢社区。我渴望成为一名优秀的程序员 ========= caesar.c:22:30:错误:不兼容的整数到指针转换将“char”传递到“const char*”类型的参数;拿 地址与&[-Werror,-Wint转换] int a=atoi(argv[1
int main(int argc, string argv[])
{
//if not exactly 1 argument, print error message a value of 1
if (argc == 2)
{
for (int i = 0; i < strlen(argv[1]); i++)
{
if (!isdigit(argv[1][i]))
{
printf("Usage: ./caesar key\n");
return 1;
}
else
{
int a = atoi(argv[1][i]);
printf("%i\n",a);
}
}
}
else
{
printf("Usage: ./caesar key\n");
}
intmain(intargc,字符串argv[])
{
//如果不完全是1参数,则打印错误消息值1
如果(argc==2)
{
对于(int i=0;i
简单使用int a=argv[1][i]-“0”
解释:我们认为ASCII码中的单个字符是0到255之间的数字。“0”1’…9’是按其值的相同顺序排列的。在这种情况下,我们通过减去“0”的ASCII数 < p>简单的使用<代码> int a=alvv [1 ] [i] -'0 ' < /代码> ,得到数字字符的值。
解释:我们考虑ASCII码中的单个字符,这是一个0到255的数字。“0”1’…9’是巧合地/故意地按其值的顺序排列的。在这种情况下,我们通过减去“0”< /P> < P >的ASCII数来获得数字字符的值。调用
atoi
将字符串转换为数字:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
//if not exactly 1 argument, print error message a value of 1
if (argc == 2)
{
for (int i = 0; i < strlen(argv[1]); i++)
{
if (!isdigit(argv[1][i]))
{
printf("Usage: ./caesar key\n");
return 1;
}
}
int a = atoi(argv[1]);
printf("%i\n", a);
}
else
printf("Usage: ./caesar key\n");
}
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
//如果不完全是1参数,则打印错误消息值1
如果(argc==2)
{
对于(int i=0;i
我建议使用循环检查字符串的每个数字,然后调用
atoi
将字符串转换为数字:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(int argc, char *argv[])
{
//if not exactly 1 argument, print error message a value of 1
if (argc == 2)
{
for (int i = 0; i < strlen(argv[1]); i++)
{
if (!isdigit(argv[1][i]))
{
printf("Usage: ./caesar key\n");
return 1;
}
}
int a = atoi(argv[1]);
printf("%i\n", a);
}
else
printf("Usage: ./caesar key\n");
}
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
//如果不完全是1参数,则打印错误消息值1
如果(argc==2)
{
对于(int i=0;i
您可以通过询问
CS50 SE
此处获得更多帮助:您正在传递一个字符,它正在等待一个字符串(achar*
)您可以通过询问CS50 SE
此处获得更多帮助:您正在传递一个字符,它正在等待一个字符串(achar*
)谢谢。这起作用了。我没有更改我的“int main”(int-argc,string-argv[])“它仍然有效。请问您为什么将其更改为char*argv[]),我不知道它是如何工作的,有什么区别?我假设你有一个定义字符串
类型的标题。从上下文来看,很明显字符串
=字符*
。我没有这个标题,所以我做了替换。谢谢。这很有效。我没有更改我的“int main(int argc,string argv[])”我不知道它是如何工作的,有什么区别?我假设你有一个定义字符串
类型的标题。从上下文来看,很明显字符串
=字符*
。我没有这个标题,所以我做了替换。