首页 > 解决方案 > C - int 函数返回 ascii 值

问题描述

我写了一个 C 函数,它应该遍历参数向量,一旦找到irow参数,它就会读取下一个参数中的整数,以便稍后在main方法中使用它:

int insertRow(char*argv[], int row_number) {
    row_number = 0;
    for(int i = 0; argv[i]; i++) {
        if ( isdigit(argv[i][0]) && (strcmp(argv[i - 1], "irow") == 0) )
            row_number = argv[i][0];
    }
    printf("%d\n", row_number);
    return row_number;
}

但是,当我运行程序时:

./main irow 4

它打印 52(4 的 ascii 表)。如何修复该函数以使其返回整数4?

标签: cfunctionintegerargumentsargv

解决方案


printf("%c\n", row_number);

存储在字符串中的数字存储在它们的 ascii 值中。如果您将值打印为数字 ( %d),您将显示 ascii 值。如果将值打印为字符 ( %c),您会将数字解释为匹配的字符,在本例中为数字


推荐阅读