Как получить подстроку внутри строки и сохранить ее в другой строке - PullRequest
1 голос
/ 24 марта 2020

У меня есть две одинаковые строки, мне нужно удалить часть одной из них и сохранить ее в другой.

Мой код не работает:

int main(int argc, char *argv[])
{
    char *imagetmp = argv[1];
    char *imagefile = imagetmp;
    char *unpackdir = imagetmp;

    // Remove substring from char imagefile
    char * pch;
    pch = strstr (imagefile,".img");
    strncpy (pch,"",6);

    // Print strings
    puts (imagefile);
    puts (unpackdir);
    return 0;
}

Вот ожидаемый результат:

./imgtools mysuperimage.img
mysuperimage.img
mysuperimage

Вот фактический результат:

./imgtools mysuperimage.img
mysuperimage
mysuperimage

Как я могу это исправить?

1 Ответ

2 голосов
/ 24 марта 2020

Вам нужно будет сделать копию argv[1], если у вас есть два указателя на одну строку, они, естественно, будут печатать одинаково:

int main(int argc, char *argv[])
{
    char imagefile[100];
    if(argc < 2) {
       puts("Too few arguments");
       return 1;
    }

    strncpy(imagefile, argv[1], sizeof(imagefile) - 1);
    //char *unpackdir = argv[1]; you can use argv[1] directly

    // Remove substring from char imagefile
    char * pch;
    if((pch = strstr (argv[1],".img")))
        *pch = 0; //or '\0', just null terminate the string, it's simpler 
    else
        puts("Extension not found");

    // Print strings
    puts (imagefile);
    puts (argv[1]);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...