将字符转换为整数

Posted

技术标签:

【中文标题】将字符转换为整数【英文标题】: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' 哇,就这么多。谢谢! 【参考方案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 );

【讨论】:

以上是关于将字符转换为整数的主要内容,如果未能解决你的问题,请参考以下文章

编程:将一个数字字符串转换成一个整数(不得调用C语言提供的将字符串转换为整数的函数)。

将十进制字符串转换为十六进制字符串而不将字符串转换为整数

怎样用c语言编写将字符串转换为整数的函数

C语言 将一个整数转换成一个字符串

在python中将字符串/字符转换为整数

C语言中字符串和整数小数相互转换的函数以及头文件