Имея небольшую проблему с этой простой программой. Я могу решить это, сделав ответ [10] глобальной переменной, но я не хочу этого делать. тесты программ для правильного ответа и работает, но возврат строки мусор:Возвращающаяся строка из функции производит мусор
#include <stdio.h>
#include <string.h>
char *user_string(char *Setting_Type[]);
int main()
{
char *response;
char *test_names[2] = {"Test", "test"};
printf("Enter \"Test\" or \"test\": ");
response = user_string(test_names);
printf("\nCorrect! Your input is: %s\n", response);
return 0;
}
char *user_string(char *Setting_Type[])
{
int loop = 1;
char response[10];
char *response_string;
while(loop = 1)
{
scanf("%s", &response);
response_string = response;
if(strcmp(response_string, Setting_Type[0]) != 0 && strcmp(response_string, Setting_Type[1]) != 0)
printf("\nWrong! Please try again: ");
else
break;
}
return response_string;
}
ли вы имеете в виду использовать оператор присваивания в условном операторе? 'while (loop = 1)'. Должно ли быть ?: 'while (loop == 1)' – ryyker
В вашем коде было несколько проблем, в основном связанных с обработкой строк, проблемами с областью, распределением и освобождением памяти. К большому счету в этом комментарии. См. Мой ответ ниже. – ryyker
@Blastfurnace - Не соглашайтесь с определенной причиной, так как OP не включает этот вопрос в свой запрос. Я согласен с тем, что он задает вопрос, непосредственно относящийся к корневой проблеме области видимости, но, как и многие другие, которые являются новыми для C, область не находится на переднем крае того, что он наблюдает. Изучение сферы действия в конечном итоге решит его проблему, но на данный момент изучает причины, по которым строка искажается, а методы работы со строками, работающими или не работающими с вызовом функции для возврата, являются достаточной причиной для того, чтобы этот вопрос оставался активным , – ryyker