在数组中放入一个数字,并将其从char转换为int

在数组中放入一个数字,并将其从char转换为int,c,char,type-conversion,int,ascii,C,Char,Type Conversion,Int,Ascii,输入一个数字,然后将每个数字放入一个数组,我把它转换成一个字符串,这样我就可以将它放入一个数组,但是当我使用cast将它重新转换为int时,我得到了ascii数字 #include <stdio.h> #include <stdlib.h> int main(){ char num_str[64] = {0}; int num, cifra; printf("Write a number: \n"); scanf("%d", &

输入一个数字,然后将每个数字放入一个数组,我把它转换成一个字符串,这样我就可以将它放入一个数组,但是当我使用cast将它重新转换为int时,我得到了ascii数字

#include <stdio.h>
#include <stdlib.h>

int main(){

    char num_str[64] = {0};
    int num, cifra;

    printf("Write a number: \n");
    scanf("%d", &num);

    int len = snprintf(num_str, 64, "%d", num);
    printf("The length is %d\n", len);

    for(int i = 0; i < len; i++) {
        cifra = (int)(num_str[i]);
        printf("%d \n", cifra);
    }

    return 0;
}
#包括
#包括
int main(){
charnum_str[64]={0};
国际货币基金组织;
printf(“写一个数字:\n”);
scanf(“%d”和&num);
int len=snprintf(num_str,64,“%d”,num);
printf(“长度为%d\n”,len);
对于(int i=0;i
将其从
char
转换为
int

测试字符的数字并减去
'0'

for(int i = 0; i < len; i++) {
    int cifra = num_str[i];
    if (cifra >= '0' && cifra <= '9') printf("%d\n", cifra - '0');
    else printf("%c\n", cifra);  // such as '-'
}
for(int i=0;i如果(cifra>='0'&&cifra
(int)'1'
的结果是什么?是49表示'1'的ascii数,那么现在如何将
'1'
转换为整数1?
(int)'1'
不起作用,因为它会产生49。是的,这就是我正在做的问题:)我会将数字直接读入字符串。(如果您担心验证问题,那么您应该检查
scanf()
-的返回值,您应该这样做)。然后,您可以通过从字符串中的(ASCII)数字减去
'0'
If(scanf(“%63s”,num_str)==1){for(int i=0;num_str[i]!='\0';i++){if(isdigit((无符号字符)num_str[i])num_str[i]-='0';}