C语言的一个问题,初学者求教!

2025-03-10 01:33:25
推荐回答(4个)
回答1:

printf("%c",*p)这一句后面少一个分号。

为了保险起见,验证temp!='\n'&&temp!='\r',有的系统回车/换行不一样,是/r。

另外,用malloc分配了内存空间,但没有用free释放掉,这样不好,虽不会引起错误。


补充:

这样呢?我加了一个q来存分配的地址,最后free(q),再看看还报错不?



{
char *p,*q;
char temp;
q=p=(char *)malloc(100*sizeof(char));
for( ; (temp=getchar())!='\n' ; p++)
{
*p=temp;
printf("%c",*p);
}
free(q);
}

 free跟的指针地址必须是malloc分配的指针地址,不能是p,因为p已经自增过很多次了。

回答2:

你必须把p恢复原来的值,否则free一定会不成功

回答3:

验证 没错啊

回答4:

你怎么输入的?