在這個簡單的程序中遇到一些麻煩。我可以通過將響應[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