Skip to content
Snippets Groups Projects
Select Git revision
  • 7bec628c2e996f9a904edd0b796849b46df853a7
  • main default
2 results

questions.md

Blame
  • stringfun.c 4.75 KiB
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <ctype.h>
    
    #define BUFFER_SZ 50
    
    // Prototypes
    void usage(char *);
    void print_buff(char *);
    int setup_buff(char *, char *, int);
    int count_words(char *, int);
    void reverse_buffer(char *);
    void print_words(char *);
    int search_replace(char *, char *, char *);
    
    // Helper function: Clean spaces
    void clean_spaces(char *buff, int *len) {
        char *src = buff, *dst = buff;
        int in_space = 0;
    
        while (*src) {
            if (isspace(*src)) {
                if (!in_space) {
                    *dst++ = ' ';
                    in_space = 1;
                }
            } else {
                *dst++ = *src;
                in_space = 0;
            }
            src++;
        }
        // Remove trailing space
        if (dst > buff && isspace(*(dst - 1))) {
            dst--;
        }
    
        *dst = '\0';
        *len = strlen(buff);
    }
    
    // Setup buffer
    int setup_buff(char *buff, char *user_str, int len) {
        if (!buff || !user_str) {
            return -1;
        }
        int user_str_len = strlen(user_str);
        if (user_str_len >= len) {
            memcpy(buff, user_str, len - 1);
            buff[len - 1] = '\0';
        } else {
            strcpy(buff, user_str);
            memset(buff + user_str_len, '.', len - user_str_len);
        }
        return strlen(buff);
    }
    
    // Print buffer
    void print_buff(char *buff) {
        printf("Buffer:  [");
        for (int i = 0; i < BUFFER_SZ; i++) {
            putchar(buff[i] ? buff[i] : '.');
        }
        printf("]\n");
    }
    
    // Word counting
    int count_words(char *buff, int str_len) {
        if (!buff || str_len <= 0) {