как обрезать строку с обоих концов, если моя строка очень большая? - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь обрезать строку с обоих концов, и теоретически я сделал это:

char *str = "this is string";
char a = 'a' ; // just to work with sizeof() function
str = str + 2*sizeof(a); // to truncate from left side 
printf("%s",str);

это печатает is is string, но когда я добавляю эти строки в код

len = strlen(str);
str [len - 2] = '\0'; // to truncate from right side 

Я также пробовал *(str + len - 2) = 0; даже strcpy() тоже не работает

это возвращает segmentation fault

Пожалуйста, помогите решить эту проблему и дайте мне знать любой другой способ сделать это.

1 Ответ

1 голос
/ 13 июля 2020
#include <stdio.h>
#include <string.h>

#define LARGE_ENOUGH 100
 
int main(void) {
    char *basestring = "abcdefghijklmnopqrstuvwxyz";
    char dst[LARGE_ENOUGH] = "";
    int start = 3;
    int end = -4; // alternatively int length = 19;
    int length = strlen(basestring) - start + end;
    printf("middle(%d, %d): [%.*s]\n", start, end, length, basestring + start);

    sprintf(dst, "[%.*s]", length, basestring + start);
    printf("new string: %s\n", dst);

    return 0;
}

См. https://ideone.com/Zvf5aW

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...