Я пытаюсь использовать массив для хранения входных данных для опроса, которые будут иметь равные положительные значения на каждой стороне, но иметь указатель на центр массива, чтобы отрицательные значения указателя можно было использовать для доступа к массиву.
Например, массив будет содержать значения от 0 до 30, указатель будет указывать на 15, и пользователю будет предложено ввести значения в диапазоне от -15 до 15, где будет увеличиваться массив на значение пользователя.
Я в порядке, если моя логика еще не совсем верна, но проблема, с которой я сейчас сталкиваюсь, заключается в увеличении значения (что я не уверен, правильно ли я делаю это на ptr[userInput]++
, и выводе эти значения с printf
. Я видел, как чей-то пост о передаче массива в printf
фактически передает указатель на массив, и тот человек сказал, что дважды отменяет ссылку на него либо **ptr
или (*ptr)[0]
, но моему компилятору (Mac XCode) это не нравится.
Есть мысли? Вот мой код Я прокомментировал, где мои вопросы были:
#define ENDPOINT 15
#define TERMINATE 999
#define TEST_FILE "TestFile6.txt"
void RecordOpinions(void)
{
int record[2 * ENDPOINT + 1];
int *ptr = &record[ENDPOINT + 1];
int userInput;
int loopCount = -ENDPOINT;
printf("ptr:%d\n", *ptr); // this was a test for me trying to figure out how to
// print the value of the ptr.
printf("Please enter your opinion of the new TV show, Modern Family from ");
printf("-%d(worst) to 0 to +%d(best). Entering %d ", ENDPOINT, ENDPOINT, TERMINATE);
printf("will terminate and tabulate your results: \n");
scanf("%d", &userInput);
while (userInput != TERMINATE) {
if (userInput > ENDPOINT || userInput < -ENDPOINT) {
printf("Invalid entry. Enter rating again: ");
}
else {
printf("You entered: %d\n", userInput);
ptr[userInput]++; // not sure if this is the right way to increment
// the array at the user's input value.
}
scanf("%d", &userInput);
}
printf("Rating entry terminated.\n");
printf("Ratings:.\n");
for (; loopCount <= ENDPOINT; ) {
printf("%d\n", ptr[loopCount++]); // this part is where I also need help
// in trying to print out the value of
// the ptr, not the address.
}
}