标签:字符 释放 lib size opened stdio.h bsp 空间 出现
1.查找一个字符在另外一个字符串中第一次出现的下标
2.查找一个字符在另外一个字符串中第一次出现的地址
3.查找一个字符串在另外一个字符串中第一次出现的地址 abcccccde ccd
1 #include <stdio.h> 2 3 int Index(char *str, char a); 4 char* Address(char *str, char a); 5 char* Find(char* str1, char* str2); 6 int main() 7 { 8 char *str1 = "abcccde"; 9 char *str2 = "ccd"; 10 char a = ‘c‘; 11 printf("%s\n" , Find(str1 , str2)); //一个字符串在另外一个字符串中第一次出现的地址 12 printf("%d\n" , Index(str1 , a));//一个字符在另外一个字符串中第一次出现的下标 13 printf("%d\n" , &str1[Index(str1 , a)]); //一个字符在另外一个字符串中第一次出现的地址 14 printf("%d\n" , Address(str1, a)); //一个字符在另外一个字符串中第一次出现的地址 15 } 16 int Index(char *str, char a) 17 { 18 int index = 0; 19 while(*str != ‘\0‘) 20 { 21 if(str[index] == a) 22 { 23 return index; 24 } 25 index++; 26 } 27 return 0; 28 } 29 char* Address(char *str, char a) 30 { 31 while(*str != ‘\0‘) 32 { 33 if(*str == a) 34 { 35 return str; 36 } 37 str++; 38 } 39 return NULL; 40 } 41 char* Find(char* str1, char* str2) 42 { 43 char *flag1 = str1; 44 char *flag2 = str2; 45 while(*str1 != ‘\0‘) 46 { 47 while(*str1 != *str2) 48 { 49 str1++; 50 } 51 flag1 = str1; 52 while(*str1 == *str2) 53 { 54 str1++; 55 str2++; 56 if(*str2 == ‘\0‘) 57 { 58 return flag1; 59 } 60 } 61 str1 = flag1 +1; 62 str2 = flag2; 63 } 64 return NULL; 65 }
4.统计一个字符串中单词的个数(单词与单词之间是空格分割)"a abc make 89 12 a ma make 12 abc 89"
5.将一个字符串插入到另一个字符串中 "abcd" "12345" 3
1 #include <stdio.h> 2 #include <string.h> 3 4 void Inter(char *str1 , char *str2, int index); 5 int main() 6 { 7 char str1[100] = "abcd"; 8 char *str2 = "1234"; 9 int index = 2; 10 Inter(str1 , str2, index); 11 printf("%s",str1); 12 } 13 void Inter(char *str1 , char *str2 , int index) 14 { 15 16 int len2 = strlen(str2); 17 char *flag = str1 + index; //找到要插入位置 18 while(*str1 != ‘\0‘) 19 { 20 str1++; 21 } 22 while(str1 >= flag) //从后向前,向后移动 23 { 24 *(str1 + len2) = *str1; 25 str1--; 26 } 27 while(len2) //从标记处开始插入 28 { 29 *flag = *str2;//或者*(flag++) == *(str2++); 30 flag++; 31 str2++; 32 len2--; 33 } 34 }
6.翻转字符串
7.判断是否回文(回文指的是顺读和逆读都一样的字符串) "abcdcba"
1 #include <stdio.h> 2 typedef int BOOL; 3 #define TRUE 1 4 #define FALSE 0 5 6 char* Reverse(char *str); 7 int Echo(char *str); 8 int main() 9 { 10 char str[10] = "abcba"; 11 printf("%s\n",Reverse(str)); 12 printf("%d\n",Echo(str)); 13 } 14 char* Reverse(char *str) 15 { 16 char *a = str; 17 char *b = str; 18 char c; 19 while(*b != ‘\0‘) 20 { 21 b++; 22 } 23 b--; 24 while(a < b) 25 { 26 c = *a; 27 *a = *b; 28 *b = c; 29 a++; 30 b--; 31 } 32 return str; 33 } 34 BOOL Echo(char *str) 35 { 36 char* a = str; 37 while(*a != ‘\0‘) 38 { 39 a++; 40 } 41 a--; 42 while(*a == *str) 43 { 44 str++; 45 a--; 46 if(a < str) 47 { 48 return TRUE; 49 } 50 } 51 return FALSE; 52 } 53 //int Echo(char *str) 54 //{ 55 // char *b = Reverse(str); 56 // while(*str == *b) 57 // { 58 // str++; 59 // b++; 60 // if(*str == ‘\0‘ && *b ==‘\0‘) 61 // return 1; 62 // } 63 // return 0; 64 //}
Getstring 函数
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 char* Getstring(); 6 int main() 7 { 8 9 char* str = Getstring(); 10 printf("%s\n",str); 11 12 return 0; 13 } 14 15 char* Getstring() 16 { 17 char c; 18 char* str = (char*)malloc(5); 19 int count = 0; 20 char* newStr = NULL; 21 int size = 5; 22 char* bj = str; 23 while((c = getchar()) != ‘\n‘) 24 { 25 //1.存储 26 *str = c; 27 str++; 28 count++; 29 //2.看空间是否够用 30 if(count+1 == size) 31 { 32 //1.申请新的空间 33 size += 5; 34 newStr = (char*)malloc(size); 35 //2.让旧空间里面存的东西变成字符串 36 *str = ‘\0‘; 37 //3.拷贝到新的空间里 38 strcpy_s(newStr,size,bj); 39 //4.释放旧的空间 40 free(bj); 41 bj = newStr; 42 str = newStr + count; 43 44 } 45 } 46 47 *str = ‘\0‘; 48 return bj; 49 }
标签:字符 释放 lib size opened stdio.h bsp 空间 出现
原文地址:http://www.cnblogs.com/Lune-Qiu/p/7723293.html