所以我typedef操作如下:固定長度陣列格式
typedef char array[25];
在我的代碼的地方我稱之爲scanf函數是這樣的:
scanf("%s",array);
但我得到的警告%當我通過一個char *時,我期待char * [25]。有什麼辦法擺脫這個警告?
所以我typedef操作如下:固定長度陣列格式
typedef char array[25];
在我的代碼的地方我稱之爲scanf函數是這樣的:
scanf("%s",array);
但我得到的警告%當我通過一個char *時,我期待char * [25]。有什麼辦法擺脫這個警告?
array
是類型,不是一個對象。你不能把它作爲參數在scanf
array a;
scanf("%s", a);
對不起,我已經聲明瞭一個類型數組的變量,可以說它的a。我使用的正確的scanf是scanf(「%s」,a),然後我得到警告。我真的很抱歉,如果編譯了上面的代碼,我會明確地得到一個錯誤。我現在能做些什麼來擺脫錯誤? – user2295150
@ user2295150用這個更新你的問題 – MOHAMED
typedef定義一個數據類型,以便可以用它來定義與相同數據類型不同的變量。 喜歡:
typedef char employee[25];
typedef char customer[25];
employee a, b;
customer y, z;
printf("Enter first employee's name: ");
scanf("%s",a);
printf("Enter customer's name: ");
scanf("%s",y);
雖然數據類型是相同的,但定義它們是闡述事情。 所有你需要做的是:拍array a;
然後scanf("%s",a);
希望你清楚核心! :)
我假設你的代碼簡稱...
的實際原因警告編譯器知道兩兩件事:你有一個char數組長度有限,而scanf函數會掃描許多字符在原始字符串中給出;可能會溢出爲其提供的陣列。
這是一個真正的問題:編譯器是非常正確的。
解決方案是更好地指定scanf格式。在這種情況下,我會建議使用「%24s」告訴scanf爲該格式元素讀取的最大字符數。
記住允許空終止 - 更好,明確ZAP陣列[LEN-1] 0
有可能是更好的方法來讀取的字符串比scanf函數。例如,查看一些基於標記的方法。
HTH,Ruth
與你發佈的內容有關的奇怪之處'array'是一個類型而不是對象。所以這不應該起作用。請向我們展示您的代碼的真實路線。 –
GCC拒絕爲我編譯這個...這是你的實際代碼嗎?如果是這樣,它是如何編譯的? – Kninnug