INI[maxx,maxy]<m,n>(4,1)<id1,x1,y1;…;idk,xk,yk;>比如这样一个字符串
我需要吧里面的数字全部提取出来,应该怎么做,(是分别提取)
首先回答你的问题:(代码需要string.h、stdlib.h和ctype.h头文件)
1 size_t find_num(const char *str, int *container, size_t max_size) 2 { 3 size_t str_l = strlen(str), i, cur; 4 int buf = 0; 5 char flag = 0; 6 7 for(i = 0, cur = 0; i < str_l && cur < max_size; i++) { 8 if(isdigit(str[i])) { 9 buf = buf * 10 + str[i] - '0'; 10 flag = 1; 11 } else if(flag) { 12 container[cur++] = buf; 13 buf = 0; 14 flag = 0; 15 } 16 } 17 if(flag && cur < max_size) 18 container[cur++] = buf; 19 20 return cur; 21 }
(注意,没有整型溢出检查,请小心)
该函数需要传递一个字符串、一个储存数字用的数组、以及数组最多储存的个数,储存的类型是int,返回数组实际储存数字的个数。
给一个简单的例子吧:
1 int array[32]; 2 size_t l = find_num(str, array, 32), i; 3 for(i = 0; i < l; i++) 4 printf("%d\n", array[i]);
“不会”这个词只会让你止步不前。我知道你有用sublime text,想提高查找和替换的效率吗?学会用正则表达式吧。
谢谢,以前就没有听说过,正则表达式这个概念,学这些东西总是感觉没有方向,课本总是太局限了,有些东西不知道连去哪儿查都没有谱