Strings Manipulation

String representation

char word[7] = {"hellow"}; → always use double quotes and char type.

or

char word[7] = "hellow"; → can remove brackets.

or

char word[] = "hellow"; → this one is better.

Reversing a string

#include <stdio.h>
#include <string.h>

void reverse(char*, int, int);

int main()
{
    char a[100];
    
    gets(a);
    reverse(a, 0, strlen(a)-1);
    
    printf("%s\n", a);
    
    return 0;
}

void reverse(char *x, int begin, int end)
{
    char c;
    if (begin >= end)
        return;
        
    c = *(x+begin);
    *(x+begin) = *(x+end);
    *(x+end)   = c;
    
    reverse(x, ++begin, --end);
}

Analyzing strings

Example:

#include <stdio.h>
#include <ctype.h>

int main(){

    char a[100] = "hello world";

    for (int i = 0; a[i] != '\0'; i++ ){
        if(islower(a[i]))
            printf("lower: %c\n",a[i]);
    }


    return 0;
}

Finding mixed character strings (without string.h)

#include <stdio.h>
#include <stdbool.h>

int main(){

    char str[] = "Hello World";
    int i;
    char  found_lower = false, found_upper = false;

    for (int i = 0; str[i] != '\0'; i++) {
        found_lower = found_lower || (str[i] >= 'a' && str[i] <= 'z');
        found_upper = found_upper || (str[i] >= 'A' && str[i] <= 'Z');

        if (found_lower && found_upper) break;
    }

    printf("%d",found_lower && found_upper);

    return 0;
}

Summary

strlen(a)                → get the length of a

strncat(a,b,sizeOfA)     → append b to a 

strchr(a,'a')            → search for first occurence of 'a' in  string a

strrchr(a,'a')           → search for last occurence of 'a' in string a

strstr(a,b)              → search for string b in a

strncmp(a,b,sizeOfA)     → compare strings a and b

strncpy(a,b,sizeOfA)     → copy b to a (overwrite a)

memcmp(a,b,FirstNBytesToCompare) → compare first n bytes

memchr(a,'a',sizeOfA)  → search array a for character 'a'

strtok(a,t)            → tokenize string a by string t

Last updated