我的功能尚未完成,但我要做的是:
返回读入的数字。
int input( int a, int b, long int *result_array )
{
int ele = 0;
char buffer[200];
char *start, *end;
scanf("%[^\n]%*c", buffer );
start = buffer;
while( ( end = ( strchr( start, ' ' ) ) != NULL ) )
{
result_array = strtol( start, &end, 10 );
ele += 1;
start = end + 1;
}
return ele;
}
它似乎没有正常工作,我认为我使用了strchr错误。
答案 0 :(得分:1)
strtol()
返回:
成功时,该函数将转换后的整数作为long int值返回。 如果无法执行有效转换,则返回零值(0L)。
你应该把你的代码写成:
end = buffer;
base = 10;
long int = li;
ele = 0;
while(li=strtol (end,&end, base)){
ele += 1;
}
return ele;
您无需明确使用strstr()
来查找下一个整数。 strtol()
足够聪明,每次转换后,它都会将终点定位到下一个int。
我写了一个正在运行的代码可能对你有帮助:
#include <stdio.h> /* printf */
#include <stdlib.h> /* strtol */
int main (){
char buffer[] = "2001 11 223 444 566";
char * end;
long int li;
end =buffer;
int base =10;
int ele = 0;
while(li=strtol (end, &end, base)){
printf("%ld \n", li);
ele += 1;
}
printf("\nNo of elements: %d", ele);
return 0;
}
其输出:
2001
11
223
444
566
No of elements: 5