在php中有str_replace()可以将字符串中的某些内容替换成另外的内容,但c并没有提供这样的功能。
因为c要管理内存,当替换成的字符串长度大于要替换的字符串长度时,原来存放数据的空间是否足够以供替换后的数据存放是个问题。为此:C可以实现返回一个动态分配内存的空间,存放替换后的数据。
另外,如果不想使用新空间存放,那么必须保证存放数据的内存足够大,比如如果肯定数据替换后不会超过10KB,那么可以先分配10KB。
具体代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> /** * 统计key在data中出现的次数 * @param data 待查找的字符串 * @param key 要查找的字符串 * @return key在data中出现的次数 */ int _count_string(char *data, char *key) { int count = 0; int klen = strlen(key); char *pos_start = data, *pos_end; while (NULL != (pos_end = strstr(pos_start, key))) { pos_start = pos_end + klen; count++; } retu