赞
踩
涉及到的函数
2.//C 库函数 int isspace(int c) 检查所传的字符是否是空白字符。
//如果 c 是一个空白字符,则该函数返回非零值(true),否则返回 0(false)。
3.//C 库函数 char *strstr(const char *haystack, const char *needle)
//在字符串 haystack 中查找第一次出现字符串 needle 的位置,不包含终止符 ‘\0’。
//该函数返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返回 null。
3.//c语言中没有字符串类型,通过字符数组来模拟字符串
//C 库函数 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符
//sizeof(类型)字符串类型,的大小,包括\0;
//C语言中的字符串是以’\0’结束的字符数组
4.//C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest
1.function:去除字符串两端的空格
//function:去除字符串两端的空格 //核心思路:设置两个指针,一个指向头,一个指向尾,然后通过++ 和-- 向中间同时逼近 //利用isspace判断是否是空,当前后指向都不是空的时候跳出循环。 //将此时尾指针的后一位赋值为'\0'作为字符串结束标志 #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> #include <ctype.h> int trimSpace(char** inbuf, char** outbuf) { int ret = 0; if ((*inbuf == NULL) || (*outbuf == NULL)) { ret = -1; printf("(inbuf == NULL) || (outbuf == NULL),%d\n", ret); return ret; } char* inbuf_tmp = *inbuf; //char* outbuf_tmp = *outbuf; char* end_tmp = inbuf_tmp + strlen(inbuf_tmp)-1; //C 库函数 int isspace(int c) 检查所传的字符是否是空白字符。 //如果 c 是一个空白字符,则该函数返回非零值(true),否则返回 0(false)。 while ((isspace(*inbuf_tmp))||(isspace(*end_tmp))) { if(isspace(*inbuf_tmp)) { inbuf_tmp=inbuf_tmp+1; } if (isspace(*end_tmp)) { end_tmp = end_tmp - 1; } } *(end_tmp + 1) = '\0'; *outbuf = inbuf_tmp; //*outbuf = end_tmp; return ret; } void main() { int ret; char text[] = " abcdef gdddd "; char* inbuf = text; char* outbuf = NULL; outbuf = (char*)malloc(sizeof(char) * strlen(text)); ret=trimSpace(&inbuf, &outbuf); if (ret != 0) { printf(" error \n"); } printf("inbuf =%s", outbuf); return; }
2.//fun:有一个字符串”1a2b3d4z”,;
//要求写一个函数实现如下功能,
//功能1:把偶数位字符挑选出来,组成一个字符串1。valude;20分
//功能2:把奇数位字符挑选出来,组成一个字符串2,valude 20
//功能3:把字符串1和字符串2,通过函数参数,传送给main,并打印。
//功能4:主函数能测试通过。
//fun:有一个字符串”1a2b3d4z”,; //要求写一个函数实现如下功能, //功能1:把偶数位字符挑选出来,组成一个字符串1。valude;20分 //功能2:把奇数位字符挑选出来,组成一个字符串2,valude 20 //功能3:把字符串1和字符串2,通过函数参数,传送给main,并打印。 //功能4:主函数能测试通过。 #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> int getStr1Str2(char* source, char* buf1, char* buf2) { int ret=0; int num = 0; char* tmp_source = source; int i=0; int j=0; while((*tmp_source) !='\0') { if ((num+2) % 2 == 0)//偶 { *(buf1 + i) = *tmp_source; i++; } else//奇 { *(buf2 + j) = *tmp_source; j++; } tmp_source++; num++; } *(buf1 + i) = '\0'; *(buf2 +j) = '\0'; return ret; } void main12343() { char text[] = "1a2b3d4z"; char* source = text; char* buf1 = NULL; char* buf2 = NULL; buf1 = (char*)malloc(sizeof(char) * strlen(text)); buf2 = (char*)malloc(sizeof(char) * strlen(text)); int ret = getStr1Str2(source,buf1,buf2); printf("source= %s\n", source); printf("buf1=%s \n", buf1); printf("buf2=%s \n", buf2); return; }
//键值对(”key = valude”)字符串
//要求1:请自己定义一个接口,实现根据key获取valude;
//要求2:编写测试用例。
//要求3:键值对中间可能有n多空格,请去除空格
//注意:键值对字符串格式可能如下:
//“key1 = valude1”
//“key2 = valude2
//“key3 = valude3”
//“key4 = valude4”
//“key5 = “
//“key6 = “
//“key7 = “
//键值对(”key = valude”)字符串 //要求1:请自己定义一个接口,实现根据key获取valude; //要求2:编写测试用例。 //要求3:键值对中间可能有n多空格,请去除空格 //注意:键值对字符串格式可能如下: //“key1 = valude1” //“key2 = valude2 //“key3 = valude3” //“key4 = valude4” //“key5 = “ //“key6 = “ //“key7 = “ #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> #include <ctype.h> int trimSpace1(char* str, char* newstr) { char* p = str; int ncount = 0; int i, j = 0; if (str == NULL || newstr == NULL) { printf("func trimSpace() \n"); return -1; } i = 0; j = strlen(p) - 1; while (isspace(p[i]) && p[i] != '\0') { i++; } while (isspace(p[j]) && p[j] != '\0') { j--; } ncount = j - i + 1; //C 库函数 char *strncpy(char *dest, const char *src, size_t n) //把 src 所指向的字符串复制到 dest,最多复制 n 个字符。 //当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充 strncpy(newstr, str + i, ncount); newstr[ncount] = '\0'; return 0; } int getKeyByValude(char* key_value_buf, char* key_buf, char* value_buf) { int ret=0; char* tmp_buf= key_value_buf; //trimSpace1(key_value_buf, tmp_buf); tmp_buf = strstr(tmp_buf, key_buf); if (tmp_buf == NULL) { ret = -1; printf("the key is not found"); return ret; } tmp_buf = strstr(tmp_buf, "="); if (tmp_buf == NULL) { ret = -1; printf("the = is not found"); return ret; } tmp_buf++; trimSpace1(tmp_buf, value_buf); *(value_buf + strlen(value_buf)) = '\0'; return ret; } void main8883() { int ret; //int value_buf_len=7; char text1[] = " key1 = valude1 "; char text2[] = "key1"; char* key_value_buf = text1; char* key_buf = text2; char* value_buf = NULL; value_buf = (char*)malloc(sizeof(char) * strlen(text1)); ret=getKeyByValude(key_value_buf,key_buf,value_buf); if (ret != 0) { printf("error"); } printf("the value is %s", value_buf); }
//fun:使用递归完成字符串反转
//fun:使用递归完成字符串反转 #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> #include <ctype.h> //C 库函数 char *strncat(char *dest, const char *src, size_t n) //把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。 //C库函数 void* memset(void* str, int c, size_t n) //复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符. void inverse(char *inbuf,char *outbuf) { if (inbuf == NULL||outbuf==NULL) { printf("inbuf is NULL"); return; } if (*inbuf == '\0')//递归结束的条件 { return; } inverse(inbuf+1, outbuf);//inbuf开始是指向第一个字符的地址,然后递归调用,将每个字符的地址都入栈,满足结束条件后,从栈顶部出栈 strncat(outbuf, inbuf, 1); return; } int main() { char buf[] = "abcd"; char outbuf[1024] = { 0 }; //memset(outbuf, '0', sizeof(outbuf)); inverse(buf, outbuf); printf("outbuf = %s", outbuf); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。