使用fgetc烫的问题

mayu899 2011-01-01 11:25:32
char *a
char ch;
FILE *fp=NULL;
fp = fopen("a.txt", "r");
ch=fgetc(fp);
a=&ch;
以%S输出a数据后有烫???
求教
...全文
111 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐三葬 2011-01-01
  • 打赏
  • 举报
回复
fgetc只接收到一个字符,以%s输出的需要是一个字符串
字符串有'\0'作为终止符,而字符没有
所以你以输出字符串的格式来输出一个字符会发生错误。
漫步者、 2011-01-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 mayu899 的回复:]
char *a
char ch;
FILE *fp=NULL;
fp = fopen("a.txt", "r");
ch=fgetc(fp);
a=&ch;
以%S输出a数据后有烫???
求教
[/Quote]不烫才怪,因为没有\0 结尾,会读到数组末尾。a=&这个玩意在哪? 数组?还是什么?
ayw215 2011-01-01
  • 打赏
  • 举报
回复
另外有个问题
fgetc返回的是int,而不是char
ningto.com 2011-01-01
  • 打赏
  • 举报
回复
a没有分配内存,以及初始化。
a = (char*)malloc(sizeof(char) * 10);//分配10个字节
memset(a, 0, sizeof(a));//全部格式化为0
...

注意最后释放:
free(a);
linfeng_79 2011-01-01
  • 打赏
  • 举报
回复
因为输出"烫烫烫烫"是因为vc会自动把未用函数的局部变量空间按字节全部初始化为CC(打个比方,你定义一个10个元素的char数组,结果你初始化了2个元素,后面没初始化,没赋值,没有使用,就变CC了)。CC CCH在Unicode的编码中就是表示中文的“烫”,所以就是很多“烫”字。
thegreatone 2011-01-01
  • 打赏
  • 举报
回复
那是因为a中没有字符串结束符'\0'.

69,368

社区成员

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

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