读书人

初学者一边看书一边提问 关于strtol()

发布时间: 2012-08-01 17:53:40 作者: rapoo

菜鸟一边看书一边提问 关于strtol() 多则多则!!
书上说,这个函数和atoi()类似,他们的区别在于:前者可以识别并报告字符串中非数字部分的第一个字符,并且允许指定数字的基数.

但是这个程序:
#include <stdio.h>
#include <stdlib.h>

int main()
{
char number[30];
char * end;
long value;

puts("Enter a number (empty line to quit):");
while(gets(number) && number[0] != '\0') //number 被赋值
{
value = strtol(number, &end, 10);
printf("value: %ld, stopped at %s (%d)\n",
value, end, *end);
value = strtol(number, &end, 16); /* base 16 */
printf("value: %ld, stopped at %s (%d)\n",
value, end, *end);
puts("Next number:");
}
puts("Bye!\n");

return 0;
}



value = strtol(number, &end, 10); 这句
书上直说的基数是10 输入10就是10 如果基数是16 输入10就是16

我搞不清楚这个基数到底是做什么的? 能通俗的讲解下啊? 大哥大姐

还有就是这个我输入的:
11 22 33
value: 11, stopped at 22 33 (32)
value: 17, stopped at 22 33 (32)
Next number:
11 33
value: 11, stopped at 33 (32)
value: 17, stopped at 33 (32)
Next number:
11 12
value: 11, stopped at 12 (32)
value: 17, stopped at 12 (32)
Next number:
11 45
value: 11, stopped at 45 (32)
value: 17, stopped at 45 (32)


为什么这个*end 输出永远都是32呢?

[解决办法]
恭喜楼主,贺喜楼主。

读书人网 >C语言

热点推荐