Почему код печатает мне только значение последнего указателя в массиве указателей на строку? - PullRequest
0 голосов
/ 25 января 2020

Вот мой код

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main(){
char* a[5] = { "tomer","tomer","tomer","tomer","tomer" };
char t[] = "ppppr";
char* n = &t;
for (int i= 0;i < 3;i++) {
    scanf(" %s",n);
    a[i] = n;
}
for ( int j= 0;j < 3;j++) {
    printf("%s\n", a[j]);
}
system("pause");
return 0;
}

По какой причине это выдает три раза последнее значение в массиве?

1 Ответ

0 голосов
/ 25 января 2020

Поскольку вы выделяете память для новой строки только один раз, что

char t[] = "ppppr";

Кстати, в вашем коде есть другие проблемы.

  • вы возвращаете 0 из main, но его тип возврата void вместо int
  • , вы должны сделать char* n = t; not & t
...