Допустим, я пытаюсь прочитать строку неизвестного размера во время выполнения и напечатать ее:
int n = 0;
printf("Enter word size:\n");
scanf("%d", &n);
char *str = (char*) malloc(n*sizeof(char));
if (str == NULL) {
printf("Malloc failed\n");
return 0;
}
printf("Enter string:\n");
char c;
int i = 0;
while (i < n&&scanf(" %c", &c) == 1) {
str[i] = c;
i++;
}
str[n] = '\0';
printf("Your string is: %s\n", str);
free(str);
Когда я пытаюсь запустить программу в CodeBlocks, она работает нормально, но когда я пытаюсьчтобы запустить его в Visual Studio (2017), он зависает, если я закомментирую free(str);
, то он работает нормально.
Что может быть причиной и как это исправить?