将字符转换为整数
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<100
--> n<100 && 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 );
【讨论】:
以上是关于将字符转换为整数的主要内容,如果未能解决你的问题,请参考以下文章