【问题标题】:convert char to integer将字符转换为整数
【发布时间】:2016-09-01 01:44:05
【问题描述】:

我正在尝试输入一系列数字(即123456789),然后一次输出一个(即1, 2, 3, ... , 9)。但是,在 9 之后,即 str[9] 之后,输出值将是随机数,例如 -48, 32, 9, -112。我如何确保输出数字停止在 9,因为我输入的最后一个数字是 9?

#include<stdio.h>
#include<string.h>

int main()
{
  char str[100];
  int n,num[100];
  scanf("%s", str);
  for(n=0;n<100;n++)
    {
      num[n] = str[n] - '0';
      printf("%d\n", num[n]);
    }
  return 0;
}

【问题讨论】:

  • str[n] == 0时停止循环
  • n&lt;100 --> n&lt;100 &amp;&amp; str[n]。还有str[8]'9'
  • 哇,就这么多。谢谢!

标签: c char int output


【解决方案1】:

您从scanf 输入的字符串可能少于100 个字符,请使用strlen 获取其大小:

int main(void)
{
    char str[100] = {0};
    int num[100];
    size_t len, n;
    scanf("%s", str);
    len = strlen(str);
    for(n=0;n<len;n++)
    {
        num[n] = str[n] - '0';
        printf("%d\n", num[n]);
    }
    return 0;
}

注意你应该使用int main(void),而不是int main()

【讨论】:

    【解决方案2】:
    • 您需要获取输入字符串的长度,使用 strlen(str) ,并将该值存储在一个变量中,直到字符串长度旋转循环。就是这样:

    • 在这里,我做到了:

    #include<stdio.h>
    #include<string.h>
    int main()
    {
     char str[100] = {};
     int n = 0,count = 0,num[100] = {};
     scanf(" %s", str);
     count = strlen(str);
     for(n = 0; n < count; n++) 
     {
       num[n] = str[n] - '0';
       printf("%d\n", num[n]);  
     } 
     return 0;
    }
    

    【讨论】:

      【解决方案3】:

      你可以比较ascii值。

      #include
      #include
      诠释主要(){
       字符 str[100];
       整数 n,num[100]=0;
       scanf("%s", str);
       而(str[n]47){
        num[n] = n*num[n]+str[n];
       n++;
      }
      printf("%d\n", num[n]);
      返回0;
      

      }

      【讨论】:

        【解决方案4】:

        似乎您应该一次处理输入一个字符而不是字符串。这将消除看似任意的 100 个字符限制的需要。您可以在打印之前验证该字符是否为数字,当它找到第一个非数字时终止循环。

        #include <ctype.h>
        char c;
        scanf( "%c", c );
        while (isdigit(c))
        {
            printf("%c\n", c );
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-02-21
          • 2010-12-31
          • 2015-05-15
          相关资源
          最近更新 更多