LINUX.ORG.RU

История изменений

Исправление Deleted, (текущая версия) :

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


int main(int argc, char ** argv)
{
    if (argc != 3)
        return 1;

    const char * str1 = argv[1];
    const char * str2 = argv[2];

    size_t size1 = strlen(str1);
    size_t size2 = strlen(str2);

    char * result = NULL;

    if (size1 >= size2 && memcmp(str1, str2, size2) == 0)
    {
        size_t result_size = size1 - size2;
        result = malloc(result_size);
        memcpy(result, str1 + size2, result_size);
    }

    printf("Original string: %s\n", str1);
    printf("Prefix: %s\n", str2);

    if (result)
    {
        printf("The string with prefix removed: %s\n", result);
        free(result);
    }
    else
    {
        printf("The string has no prefix!\n");
    }

    return 0;
}
vadim@aquila:/tmp$ gcc -Wall 111.c
vadim@aquila:/tmp$ ./a.out qwerty qwe
Original string: qwerty
Prefix: qwe
The string with prefix removed: rty
vadim@aquila:/tmp$ ./a.out qwerty 1qwe
Original string: qwerty
Prefix: 1qwe
The string has no prefix!
vadim@aquila:/tmp$ ./a.out qw qwe
Original string: qw
Prefix: qwe
The string has no prefix!
vadim@aquila:/tmp$ 

Исходная версия Deleted, :

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


int main(int argc, char ** argv)
{
    if (argc != 3)
        return 1;

    const char * str1 = argv[1];
    const char * str2 = argv[2];

    size_t size1 = strlen(str1);
    size_t size2 = strlen(str2);

    char * result = NULL;

    if (size1 >= size2 && memcmp(str1, str2, size2) == 0)
    {
        size_t result_size = size1 - size2;
        result = malloc(result_size);
        memcpy(result, str1 + size2, result_size);
    }

    printf("Original string: %s\n", str1);
    printf("Prefix: %s\n", str2);

    if (result)
    {
        printf("The string with prefix removed: %s\n", result);
        free(result);
    }
    else
    {
        printf("The string has no prefix!\n");
    }

    return 0;
}
vadim@aquila:/tmp$ gcc -Wall 111.c
vadim@aquila:/tmp$ ./a.out qwerty qwe
Original string: qwerty
Prefix: qwe
The string with prefix removed: rty
vadim@aquila:/tmp$ ./a.out qwerty 1qwe
Original string: qwerty
Prefix: 1qwe
The string has no prefix!
vadim@aquila:/tmp$ ./a.out qw qwe
Original string: qw
Prefix: qwe
The string has no prefix!
vadim@aquila:/tmp$