Как мне остановить присвоение значений второму массиву? - PullRequest
0 голосов
/ 10 марта 2019

Кто-нибудь знает, почему мой второй массив получает значения от моего первого?Файл keylist.txt просто 2 14 74 8 36 4 11 ...

#include <stdio.h>

int main() {
    int keylist[6], guess_list[6], game = 1;
    char file_name[30];

    FILE *ifp;

    for (int i = 0; i < 7; i++) {
        keylist[i] = 0;
        guess_list[i] = 0;
    }

    ifp = fopen("keylist.txt", "r");

    for (int i = 0; i < 7; i++) {
        fscanf(ifp, "%d", &keylist[i]);
    }

    for (int i = 0; i < 7; i++) {
        printf("%d, %d\n", keylist[i], guess_list[i]);
    }

    return 0;
}

1 Ответ

2 голосов
/ 11 марта 2019

относительно:

for(int i = 0; i<7; i++)
{
    keylist[i] = 0;
    guess_list[i] = 0;
}

массивы keylist[] и guess_list[] содержат только 6 записей, однако цикл индексирует 0,1,2,3,4,5,6 IE 7 записей

Так что доступ за пределы верхнегограницы этих массивов.Это приводит к неопределенному поведению и является основным источником проблемы.

Предложите изменить операторы for() на:

for(int i=0; i<6; i++)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...