我正在嘗試編寫這個簡單的代碼,它將用戶輸入消息保存在堆棧中,然後再顯示給他。 我不想限制用戶輸入的字符數,所以每次用戶輸入新字符時都使用動態內存分配。動態分配內存以保存用戶輸入
如果用戶輸入小號碼,代碼運行良好。的字符,但它不起作用,如果用戶鍵入一個很大的號碼。的字符
例如:如果我輸入「艾哈邁德」它會顯示給我,但如果我輸入更多字符的東西它不。
這是我的代碼:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *UserInput;
UserInput=(char *)calloc(1,sizeof(char));
int i=0,ii=0;
printf("Enter a message! \n");
while(*(UserInput+ii)!='\n'){
scanf("%c",(UserInput+i));
ii=i;
i++;
UserInput=realloc(UserInput,i*sizeof(char));
}
for(i=0;i<=ii;i++){
printf("%c",*(UserInput+i));
}
return 0;
}
1)'int i = 0' - >'int i = 1'(因爲'i'代表安全大小) – BLUEPIXY
感謝您提出這個意見。當用戶輸入的垃圾初始值爲'\ n'時,我添加了初始化來避免重合,所以我添加了這個初始化'* UserInput ='1';' – Ahmed
主要問題是'realloc'時的大小。修復像[this](https://ideone.com/ErKreS) – BLUEPIXY