我試圖char從鍵盤讀取一些陣列,但每次程式崩潰時。
我想知道如何輕松地char從鍵盤輸入和存盤陣列。
int main()
{
int i;
char *days[7];
for(i=0;i<7;i )
{
scanf("%s", days[i]);
}
for(i=0;i<7;i )
{
printf("%s\n", days[i]);
}
return 0;
}
uj5u.com熱心網友回復:
char *days[7]宣告一個指標陣列。除非使用有效地址初始化,否則它們指向無效的記憶體位置。所以,當你想寫信給他們時,他們會呼叫未定義的行為。
在使用它們之前,您需要確保使它們指向有效的記憶體(位置)。
uj5u.com熱心網友回復:
Yuo 宣告了一個指向的指標,char但這些指標不參考有效記憶體。
您需要為它們分配記憶體:
int main(void)
int i;
char *days[7];
for(i=0;i<7;i )
{
days[i] = malloc(MAXLENGTH);
scanf("s", days[i]);
}
for(i=0;i<7;i )
{
printf("%s\n", days[i]);
free(days[i]);
}
return 0;
}
或者你可以
int main(void)
{
int i;
char days[7][MAXLENGTH];
for(i=0;i<7;i )
{
scanf("s", days[i]);
}
for(i=0;i<7;i )
{
printf("%s\n", days[i]);
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/392920.html
上一篇:函式如何區分指標和字串?
下一篇:我在C中的結構鏈表有問題
