Mọi người cho em hỏi: em viết chương trình sau đơn giản chỉ để nhập vào một xâu và xuất ra lại, tuy nhiên em không muốn cấp phát tĩnh mà muốn cấp phát động, cho người dùng nhập thoải mái, nhập tới đâu thì chương trình cấp phát tới đó. Nhưng khi nhập xong thì xuất không được, lạ hơn là nếu thay hàm puts bằng printf với %s thì lại được, và nếu tách việc nhập đó ra một hàm riêng thì cả puts và printf đều không xuất được
Em mới học lập trình nên còn non nớt, mong mọi người chỉ em lỗi sai và nếu có thể thì hướng dẫn cho em cách khắc phục hoặc một ý tưởng khác
Chương trình của em đây:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int main(void)
{
char *p;
char c;
int i=0;
p=(char*)malloc(sizeof(char));
while(1)
{
c=getche();
if(c>=32 && c<=126) //c là chữ cái, số hoặc dấu cách
{
i++;
p=(char*)realloc(p,(i+1)*sizeof(char));
*(p+i-1)=c;
*(p+i)='\0';
}
else
if(c==10 || c==13) //em chả biết enter là 10 hay 13
break;
else
printf("\b \b"); //phòng khi người dùng nhập các phím khác
}
puts(p);
getch();
return 0;
}