Im довольно новичок в программировании на C. У меня проблема, с которой я все еще не мог избавиться после буквально часов исследований. Я собираюсь вставить мой (основной) исходный код ниже, если вам нужен пример. Проблема в основном заключается в следующем:Ошибка возврата измененного указателя
У меня есть метод, который возвращает 1 для успеха, 0 в противном случае. Он принимает int-pointer, который используется как фактическое возвращаемое значение функции, что означает, что переданный указатель модифицируется методом. Мне нужно работать с измененным значением позже. Поведение должно быть похоже на указатель буфера в функции, например fgets или scanf. Это отлично работает, пока я не попытаюсь вернуть измененное значение указателя из вызывающей функции. Я получаю ошибку нарушения доступа, а значение int - отрицательный максимум, соответственно. не определено. Как я буду делать это правильно?
Я читал о двойных указателях раньше, но не мог понять, как включить эту технику в мою программу ... Являются ли двойные указатели правильным подходом?
Ниже мой исходный код для справки :)
int validateInteger(int *out) {
char buffer[17];
fgets(buffer, 16, stdin);
if (sscanf(buffer, "%d")) {
*out = atoi(buffer);
return 1;
}
return 0;
}
int anotherFunction() {
int selection = 0;
while(1) {
printf("Print something...");
if (validateInteger(&selection) && selection >= 0 && selection <= 7) {
break;
} else {
clearScreen();
}
}
return selection;
}
int main() {
while(1) {
int sel = anotherFunction(); // THIS IS WHAT DOESN'T WORK!
switch (sel) {
case 0:
return 0;
default:
printf("Print some error msg here...");
return 1;
}
}
}
Любая помощь будет принята с благодарностью. Спасибо, ребята, заранее!
'if (sscanf (buffer,"% d ")) {' what if this conditional is not true? –
Если sscanf (buffer, "% d") неверен, функция возвращает 0 и не изменяет указатель int. – armin