我正在为 C 字符数组的元素类型而苦苦挣扎。
char get_final (char *num_str)
{
int len = strlen(num_str);
char val;
val = num_str[len-1];
printf("the number is %s\n", num_str);
printf("the length is %d\n", len);
printf("the last digit is %s\n", val);
printf("the last digit is %s\n", num_str[len-1]);
return val;
}
int main() {
char num[4] = "123";
int last;
last = get_final(num);
printf("final: the last digit is %d\n", last);
}
当我编译它时,我在打印函数中最后一位数字时收到警告,格式 %s 需要一个字符,但我给它一个整数。但是我已经将变量 val 声明为 char,并且我从字符数组中为它分配了一个元素。那么为什么要投诉整数类型呢?
当我运行代码时,它会在同一点发生段错误。
我该如何解决这个问题?
最佳答案
替换
printf("the last digit is %s\n", val);
printf("the last digit is %s\n", num_str[len-1]);
与
printf("the last digit is %c\n", val);
printf("the last digit is %c\n", num_str[len-1]);
通过将 %s
放在 printf
中,您是说您想要打印一个字符串(由 char 指向的以 0 结尾的字符数组*
), 不是字符。但是 val
和 num_str[len-1]
都是字符,所以你应该使用 %c
来代替。
关于对字符数组元素类型的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24048346/