我正在玩用戶輸入和列印字串。每當我運行代碼時,我嘗試列印的最后一個字串都會出現故障并且無法正確列印出來。
我的代碼是:
#include <stdio.h>
int main() {
char inputRoses[] = "";
char inputViolets[] = "";
char inputAnd[] = "";
char roses[] = "Roses are: ";
char violets[] = "Violets are: ";
char and[] = "and: ";
printf("\n%s", roses);
scanf("%s", inputRoses);
printf("\n%s", violets);
scanf("%s", inputViolets);
printf("\n%s", and);
scanf("%s", inputAnd);
return 0;
}
在控制臺中得到了這個:
Roses are: red
Violets are: blue
ue
我也試過這個:
#include <stdio.h>
int main() {
char inputRoses[] = "";
char inputViolets[] = "";
char roses[] = "Roses are: ";
char violets[] = "Violets are: ";
printf("\n%s", roses);
scanf("%s", inputRoses);
printf("\n%s", violets);
scanf("%s", inputViolets);
return 0;
}
但是在控制臺中得到了這個:
Roses are: red
ed
uj5u.com熱心網友回復:
您還沒有為掃描的輸入分配任何記憶體。char inputRoses[] = ""是一個包含一個空終止字符的 char 陣列(值為0)
您需要分配一些記憶體,然后通過格式化程式限制 scanf 在將用戶輸入寫入緩沖區時不會溢位此記憶體空間。
#include <stdio.h>
int main() {
char inputRoses[50] = "";
char inputViolets[50] = "";
char inputAnd[50] = "";
char roses[] = "Roses are: ";
char violets[] = "Violets are: ";
char and[] = "and: ";
printf("\n%s", roses);
scanf("Is", inputRoses);
printf("\n%s", violets);
scanf("Is", inputViolets);
printf("\n%s", and);
scanf("Is", inputAnd);
return 0;
}
Scanf 現在將限制用戶輸入的大小以適應輸入緩沖區可用的記憶體。我們使用緩沖區的大小減一,以便在字串末尾允許空終止符。
結果如下:
$ ./a.out
Roses are: red
Violets are: blue
and: stackoverflow has a big cazoo!
uj5u.com熱心網友回復:
您正試圖將許多字符放在一個插槽中。您必須在記憶體中為輸入的最大字符數創建足夠的插??槽。除非您想在代碼中再次使用它們,否則使用一個輸入陣列作為緩沖區也足夠了。即使是這樣,您最好使用單個輸入緩沖區并使用strncpy庫函式將輸入的字符復制到它們的最終目的地。
#include <stdio.h>
int main() {
char input[20]; // Must define the size (of character slots in memory) depending on the max possible input
char roses[] = "Roses are: ";
char violets[] = "Violets are: ";
printf("\n%s", roses);
scanf("%s", input);
printf("\n%s", violets);
scanf("%s", input);
return 0;
}
uj5u.com熱心網友回復:
您應該像這樣初始化空陣列:
char inputRoses[60] = "";
char inputViolets[50] = "";
char inputAnd[40] = "";
你的問題解決了
發生這種情況是因為您宣告了一個空字符陣列,而不是您必須指定字符陣列的大小,如果您想獲得動態大小區域,則使用字符指標。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/487781.html
標籤:C
下一篇:結構的大小
