初学者一边看书一边提问 关于strtol() 多则多则!
菜鸟一边看书一边提问 关于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呢?
------解决方案--------------------
恭喜楼主,贺喜楼主。
书上说,这个函数和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呢?
------解决方案--------------------
恭喜楼主,贺喜楼主。