我正在爲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需要一個字符該函數的最後一個數字的打印警告,但我給它一個int。但是我已經將變量val聲明爲char,並且我將它從一個字符數組中分配給一個元素。那麼爲什麼整數類型的投訴?
當我運行代碼時,它在這個同一點上發生段錯誤。
我該如何解決這個問題?
當錯誤消息顯示「一個int」時,它指的是您傳入的「char」。它表示「int」的原因是由於*默認參數促銷*。 –
此外,有關%s的警告消息會說它期望'char *',而不是「一個字符」。 C: –