C语言写入文件时指针和数组有什么区别?

ZX_Pluto 2016-10-20 08:54:50
用数组的方式写入一行字符串,成功执行。
int main()

{
char str[10];
//char *str;

FILE *fp;

gets(str);

fp = fopen("test.txt","a+");

fputs(*str,fp);

//将字符串str追加写到test.txt文件中

fclose(fp);

return 0;

}
将char str[10];改为 char *str;
程序报错,这是为什么?
int main()

{
//char str[10];
char *str;

FILE *fp;

gets(str);

fp = fopen("test.txt","a+");

fputs(*str,fp);

//将字符串str追加写到test.txt文件中

fclose(fp);

return 0;

}
...全文
216 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2016-10-21
  • 打赏
  • 举报
回复
char *str; 只是一个指针,你没有为指针分配内存就去写(gets(str);) 当然出错了
zycxnanwang 2016-10-20
  • 打赏
  • 举报
回复
楼主,估计是个新手,内存分配没有搞懂, 建议初学的时候,理解c语言的内存 指针是个地址, 所以你引用的时候, 要分配内存空间, 才可以*str !
帕奇笔记 2016-10-20
  • 打赏
  • 举报
回复
你要注意的是指针的使用。 char *str 这是没有分配空间的指针,自然就会报错了。 两种解决办法: 1.用数组,提前分配空间 2.调用动态分配空间的函数malloc或者自己封装一个函数,给指针分配空间就好了

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧