Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int str_len(char* str);
- char* str_copy(char* dst,char* str);
- char* str_cat(char* str1,char* str2);
- int str_cmp(char* str1,char* str2);
- char* str_str(char* str,char* sub_str);
- int longest_word(char* str);
- int ch_str(char* str, char ch);
- void print_words(char* str);
- char* reverse_sub_str(char* str,int start,int end);
- void swap(char* a,char* b);
- int main(){
- char str[10]={'A','b','2','4','f','5','g'};
- char str1[]={"134"};
- char* str2={"11"};
- char dst[15]={};
- char sub_str[10]={'l','l','o'};
- //printf("%d\n",str_len(str));
- //printf("%s\n",str_copy(dst,str));
- //printf("%s\n",str_cat(str1,str2));
- printf("%d\n",str_cmp(str1,str2));
- //printf("%s",str_str(str2,sub_str));
- //printf("\n%d",longest_word(str2));
- //print_words(str2);
- return 0;
- }
- int str_len(char* str){ // выводит количество символов в строке, из-за конца строки и нумерации массивов в С
- int i=0;
- while(str[i])
- i++;
- return i;
- }
- char* str_copy(char* dst,char* str){ // если символов больше чем размер копируемой - 32 строка кода
- int i=0;
- while(str[i]){
- dst[i]=str[i];
- i++;
- }
- dst[i]='\0';
- return dst;
- }
- char* str_cat(char* str1,char* str2){ // сложить две строки, пока не закочится вторая
- int i=0;
- int len_1=str_len(str1);
- int len_2=str_len(str2);
- while(str1[i]){
- str1[i+len_1]=str2[i];
- i++;
- }
- str1[i]='\0';
- return str1;
- }
- int str_cmp(char* str1,char* str2){ // анализирует коды, если строки равны - 0, у первого неодинакого символа выводит разность их кодов, если <0-строка 1 меньше
- int i=0;
- int delta=0;
- while(str1[i] && str2[i] && delta==0){
- delta = str1[i] - str2[i];
- i++;
- }
- return delta;
- }
- char* str_str(char* str,char* sub_str){
- int i = 0, j = 0, flag = 1;
- while (str[i])
- {
- j = 0;
- flag = 1;
- while (sub_str[j])
- {
- if (str[i + j] != sub_str[j])
- {
- flag = 0;
- break;
- }
- j++;
- }
- if (flag)
- return str + i;
- i++;
- }
- }
- int ch_str(char* str, char ch)
- {
- int i = 0;
- while (str[i])
- {
- if (str[i] == ch)
- {
- return i;
- }
- else i++;
- }
- return -1;
- }
- int longest_word(char* str)
- {
- int i = 0, current_len = 0;
- int max_len = 0;
- int word = 0;
- char* sep = " .,-_\n\t!?&";
- while(str[i]) {
- if(ch_str(sep,str[i]) != -1) {
- if(word) {
- if(current_len > max_len)
- max_len = current_len;
- current_len = 0;
- word = 0;
- }
- }
- else {
- word = 1;
- ++current_len;
- }
- i++;
- }
- return max_len;
- }
- void print_words(char* str){
- int i = 0;
- int counter = 0;
- int word = 0;
- char* sep = {" .,-_\n\t!?&"};
- while(str[i])
- {
- if( ch_str(sep,str[i])!= -1){
- if (word){
- printf("\n");
- word=0;
- }
- }
- else {
- word = 1;
- printf("%c", str[i]);
- }
- i++;
- }
- }
- void swap(char* a,char* b){
- char c = *a;
- *a = *b;
- *b = c;
- return;
- }
- char* reverse_sub_str(char* str,int start,int end){
- while(start<end){
- swap(&str[start++],&str[end--]);
- }
- return str;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement