[求助]函数strtol的参数问题
字符串转换函数strtol的参数,第二个应该是指向字符串的指针,但是怎么用都不对
一个例:
char *remainderPtr;
x = strtol (string, &remainderPtr, 0);
只有加了&才对了.不加的时候有警告,而且会使结果出错.想问问为什么~怎么这样反而对了,加了&不就不是一个指针了吗?
那就应该是错的才对.
就是它的返回值
x = strtol (string, &remainderPtr, 0);
就放到x里面去了
比如 string = "-1234567abc"
那么x = -1234567
还有就是有时候字母也要转换,那要看第三个参数, 他表示基数
比如:
string = 67a"
x = strtol (string, &remainderPtr, 12);
那么如果来一个printf ("%ld", x);
那么就会输出 958 (6*12^2 + 7*12 + 10)
不知道我解释清楚没~因为我也是今天才看到这个函数~
[此贴子已经被作者于2007-2-10 23:33:38编辑过]
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
void main()
{
char *sp="dfd123",*p;
long x;
x=strtol(sp,&p,10);
printf("%s:",p);
printf("%d",x);
getchar();
}
显示
dfd123:0
如果*sp="123dfd"
显示是
dfd:123
难道前面必须是数字符号?
从左到右直到读到第一个不能转换的为止.由于你第一个字母是d,而第三个参数是10,所以直接在第一个字符那里就停止了.
如果你把第三个参数改成14 (14进制,可以理解为现在d (即13)有效),,所以输出就会是fd123:13