Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CS50凯撒我该怎么做?_C_Cs50_Caesar Cipher - Fatal编程技术网

CS50凯撒我该怎么做?

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

我进入CS50已经3周了,我花了一整天的时间试图让atoi工作。我在编译下面的代码时遇到以下错误

我的问题是:

  • 如何表示atoi()函数中的每个字符
  • 如何只打印一次结果?(当我将atoi更改为argv[1]时,循环使其打印argv的次数)
  • 提前感谢社区。我渴望成为一名优秀的程序员

    ========= caesar.c:22:30:错误:不兼容的整数到指针转换将“char”传递到“const char*”类型的参数;拿 地址与&[-Werror,-Wint转换] int a=atoi(argv[1][i]); ^~~~~~~~~~

    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
    此处获得更多帮助:您正在传递一个字符,它正在等待一个字符串(a
    char*
    )您可以通过询问
    CS50 SE
    此处获得更多帮助:您正在传递一个字符,它正在等待一个字符串(a
    char*
    )谢谢。这起作用了。我没有更改我的“int main”(int-argc,string-argv[])“它仍然有效。请问您为什么将其更改为char*argv[]),我不知道它是如何工作的,有什么区别?我假设你有一个定义
    字符串
    类型的标题。从上下文来看,很明显
    字符串
    =
    字符*
    。我没有这个标题,所以我做了替换。谢谢。这很有效。我没有更改我的“int main(int argc,string argv[])”我不知道它是如何工作的,有什么区别?我假设你有一个定义
    字符串
    类型的标题。从上下文来看,很明显
    字符串
    =
    字符*
    。我没有这个标题,所以我做了替换。