C каждое значение в массиве String равно последнему добавленному значению - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь проанализировать файл данных с помощью строк текста, а затем добавить строки текста в массив строк, используя цикл while. Кажется, что каждый раз, когда я добавляю новую строку в массив в индексе, каждое значение в индексах ниже, чем это установлено для строки, которая добавляется. Например, если я установил для strings [2] значение «foo», он также установит для strings [1] и strings [0] значение «foo», даже если значение strings [1] и strings [0] было чем-то другим до этого.

Я попытался проверить, чтобы убедиться, что значения, которые я добавляю в массив, верны, и это так. Я также попытался сделать массив const, но безуспешно.

int main()
{
    char** strings = malloc(1000 * sizeof(char));
    int index = 0;
    StringBundle** bundle = malloc(1000 * sizeof(StringBundle)); //StringBundle is used to parse the string

    while (fgets(str, 500, file))
    {
        bundle[index] = createStringBundle(str); //String bundle works correctly
        char** tokens = bundle[index]->Tokens; //Gets the parts of a parsed string
        char concat[100]; //This string is composed of two parts of the string that is parsed
        strcpy(concat, tokens[1]);
        strcat(concat, tokens[3]);
        printf("%s\n", concat) //This will print the correct value, so the value of concat is correct
        strings[index] = concat;
        index++;
    }
    //"Montery CA" is the last value added to the array
    printf("%s\n", strings[2]); //Issue- this will print "Montery CA", when it should print "Chicago IL"
    printf("%s\n", strings[13]); //Issue- this will print "Montery CA", when it should print "San Diego CA"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...