Я экспериментирую с этим очень простым кодом и сталкиваюсь с некоторыми проблемами с памятью.
Я заметил, что массив символов неправильно читает входные данные, вероятно, съел новую строку ввода. Программа работала нормально для массива int, но я все еще получаю предупреждение об отмене ссылки на указатель NULL.
Вот массив символов,
#include <stdio.h>
#include<stdlib.h>
int main()
{
int N, i;
char* set;
scanf_s("%d", &N);
set = (char*)calloc(N, sizeof(char));
for (i = 0; i < N; i++)
{
scanf_s("%c", (set+i), 1);
}
for (i = 0; i < N; i++)
{
printf("%c", *(set + i));
}
return 0;
}
Вот массив int,
#include <stdio.h>
#include<stdlib.h>
int main()
{
int N, i;
int* set;
scanf_s("%d", &N);
set = (int*)calloc(N, sizeof(int));
for (i = 0; i < N; i++)
{
scanf_s("%d", (set+i));
}
for (i = 0; i < N; i++)
{
printf("%d", *(set + i));
}
return 0;
}
Как упоминалось ранее, массив int работает отлично, но я все еще хочу исправить предупреждение.
В любом случае, вывод для массива char - это просто 'a' и новые строки, когда я ввожу "abc" в качестве ввода и нажимаю ввод. В качестве альтернативы я попытался ввести просто 'a' и нажать Enter, и он даже не позволяет мне ввести другие персонажи больше.
Я хочу понять, что именно не так, и хочу это исправить. В настоящее время я использую IDE VS, но я бы хотел также совместимую с gcc 6.3 версию.
Edit: ошибка, которую я получаю, находится в строке printf, и она читает-
Warning C6011 Dereferencing NULL pointer 'set+i'.