首页 > 编程知识 正文

c++ strtol 使用,C语言strcat函数

时间:2023-05-06 13:13:33 阅读:260071 作者:3555

1.定义 #include <stdlib.h>long int strtol(const char * restrict nptr,char ** restrict endptr,int base);/*base:表示进制比如10-->10进制、2-->2进制、16-->16进制*//*功能:将字符形式的数字nptr按照进制base转换为long int型的整数*//*(**endptr):指向指针的指针==指向一个位置的指针==指向结束转换位置的指针*/ 2.程序实例 /*一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束符('')结束转换,并将转换数值返回*//*参数endptr指向停止转换的位置,若字符串nptr的所有字符都成功转换成数字则endptr指向串结束符''。判断是否转换成功,应检查**endptr是否为''*/#include <stdio.h>#include <stdlib.h>#define LIM 30char *s_gets(char *s, int n);int main(){ char number[LIM]; char *end; long value; puts("Enter a number(empty line to quit)"); while (s_gets(number, LIM) && number[0] != '') { value = strtol(number, &end, 10); /*也即&end是一个指向停止转换位置的指针---指向指针的指针, 所以end本身是一个表示一个位置,再次解引用的值就是停止转 换处字符的ASCII码(重要!!)*/ printf("base 10 input,base 10 output:%ld,stopped at %s(%d)n", value, end, *end); value = strtol(number, &end, 16); printf("base 16 input,base 10 output :%ld,stopped at %s(%d)n", value, end, *end); puts("NEXT number!"); } puts("Bye!"); return 0;}char *s_gets(char *s, int n){ char *ret_val; int i = 0; ret_val = fgets(s, n, stdin); //fgets正常情况下返回的地址与第一个输入参数相同 if (ret_val != NULL) { while (s[i] != 'n' && s[i] != '') { i++; } if (s[i] == 'n') { s[i] = ''; } else { while (getchar() != 'n') { continue; } } } return ret_val;} 输入10和10bank的不同结果如下:10base 10 input,base 10 output:10,stopped at (0)base 16 input,base 10 output :16,stopped at (0)NEXT number!10bankbase 10 input,base 10 output:10,stopped at bank(98)base 16 input,base 10 output :4282,stopped at nk(110)NEXT number!***********************************************其中98是字母b的ASCII码、110是字母n的ASCII码。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。