字符串转数值 数值 = tonumber(字符串)

支持 16进制转10进制:1024 = tonumber(”0x000400”)
支持 10进制转10进制:1234 = tonumber(”1234”)
暂时不支持其他进制转换

  1. int tonumber(char s[]) {
  2. int i,c;
  3. int n = 0;
  4. if (s[0] == '0' && (s[1]=='x' || s[1]=='X')) { /*将16进制转换10进制*/
  5. i = 2;
  6. for (; (s[i] >= '0' && s[i] <= '9') || (s[i] >= 'a' && s[i] <= 'z') || (s[i] >='A' && s[i] <= 'Z'); ++i) {
  7. if (s[i] >= 'A' && s[i] <= 'Z') { /*将大写字母转换成小写字母*/
  8. c = s[i] + 'a' - 'A';
  9. } else {
  10. c = s[i];
  11. }
  12. if (c > '9') {
  13. n = 16 * n + (10 + c - 'a');
  14. } else {
  15. n = 16 * n + (c - '0');
  16. }
  17. }
  18. } else { /*将10进制转换10进制*/
  19. for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i) {
  20. n = 10 * n + (s[i] - '0');
  21. }
  22. }
  23. return n;
  24. }

字符串分割 下个起始键值 = sting_gmatch(切割存放表,起始键值,字符串,分割符号)

返回=0代表遍历结束

  1. int sting_gmatch(char s[],int k,char str[],char delims[]) {
  2. int i;
  3. int j=strlen(str); //获取数组元素个数#t
  4. for(i=k; i<j; i++) {
  5. if(str[i]==delims[0]) {
  6. s[i-k]='\0';
  7. /* printf("%s\n",s); */
  8. return i+1;
  9. } else {
  10. s[i-k]=str[i];
  11. }
  12. if(i==j-1) {
  13. s[i+1]='\0';
  14. return 0;
  15. }
  16. }
  17. }
  18. int main() {
  19. char str[] = "0x000400-0x333333";
  20. int p=0;
  21. while (1) {
  22. char s[10];
  23. p=sting_gmatch(s,p,str,"-");
  24. printf("%s\n",s);
  25. /* printf("%d\n",p); */
  26. if(p==0) {
  27. break;
  28. }
  29. }
  30. return 0;
  31. }

整数的指针
从标准输入中获得2个整数,并将2个整数交换如下。使用指针的概念在你的工作中。打印你的结果在标准输出。
C 函数手册 - 图1
C 函数手册 - 图2
数据结构:整数数组
输入:2个由空格隔开的整数
•输出:2个整数交换
条件:使用指针来交换2个数字
做一个函数