int f(char *s)
{int k=0;
while(*s) k=k*10+*s++-'0';
retuen(k);
}
以f("1234"),調用該函數怎麼編寫?結果?
輸出結果:1234
這是一個字符串轉整數的程序:從頭開始,依次取出字符串中的字符,當前整數向前進一位(x10),並將取出的字符作為個位數添加到整數的末尾。其中,s++表示字符串指針向後移,取下一個字符;*s-'0',當前字符跟 '0’ 的 ASCII 編碼之差,就是當前字符字面顯示的數字(比如 '4'-'0’=4,實際上是 ASCII 編碼之差 52-48=4 )
完整的程序:
#include <stdio.h>
int str_to_num(char *s) {
int k=0;
while(*s) k = k*10 + *s++ - '0';
return k;
}
int main() {
char *s = "1234";
printf("string value: %s, number value: %d\n", s, str_to_num(s));
getchar();
return 0;
}