【问题标题】:Using atoi with char将 atoi 与 char 一起使用
【发布时间】:2010-05-26 18:31:42
【问题描述】:

有没有办法在 C 中将 char 转换为字符串?

我正在尝试这样做:

   char *array;

   array[0] = '1';

   int x = atoi(array);

   printf("%d",x);

【问题讨论】:

    标签: c atoi


    【解决方案1】:
    char c = '1';
    int x = c - '0';
    printf("%d",x);
    

    【讨论】:

    • 最简单的答案,无需使用任何中间缓冲区
    【解决方案2】:

    如果您想将数字 char 转换为 int,只需使用字符算术减去 ASCII 码:

    int x = myChar - '0';
    printf("%d\n", x);
    

    【讨论】:

      【解决方案3】:

      你需要给字符串分配内存,然后null终止。

      char *array;
      
      array = malloc(2);
      array[0] = '1';
      array[1] = '\0';
      
      int x = atoi(array);
      
      printf("%d",x);
      

      或者,更简单:

      char array[10];
      
      array = "1";
      
      int x = atoi(array);
      
      printf("%d",x);
      

      【讨论】:

        【解决方案4】:

        怎么样:

           char arr[] = "X";
           int x;
           arr[0] = '9';
           x = atoi(arr);
           printf("%d",x);
        

        【讨论】:

        • 这对于单个字符来说是相当过分的。额外的变量、数组、空终止符都是不必要的。
        【解决方案5】:

        您可以通过以下方式将字符转换为字符串:

        char string[2];
        string[0] = '1';
        string[1] = 0;
        

        字符串以 NUL 字符结尾,其值为 0。

        【讨论】:

          【解决方案6】:

          atoi 函数的声明是(它等待一个“字符串”):

          int atoi(const char * str)
          

          如果你打算将它与单个字符一起使用,你会得到一个segmentation fault,因为该函数会尝试读取内存,直到找到'\0'强>!

          E. G。试试这个:

          char char_digit = '5';
          char string_for_atoi[2] = { char_digit, '\0' };
          
          int number = atoi(string_for_atoi);
          

          【讨论】:

            猜你喜欢
            • 2015-08-14
            • 1970-01-01
            • 1970-01-01
            • 2021-03-08
            • 2017-08-23
            • 2017-07-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多