LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 698|回复: 2

刚发现 glibc 中 fscanf 的一个功能

[复制链接]
发表于 2005-3-7 12:04:13 | 显示全部楼层 |阅读模式
如果要读取一个长的字符串,不知道它的长度是多少,可以这样:
  1. char *s = NULL;
  2. fscanf("%as", s);
  3. /* using s */
  4. free(s);
复制代码

不过要说明两点:
1. fscanf 的 manpage 并没有说明如果内存分配失败会怎样;
2. C99 为 fscanf 中的 %a 定义了另外的行为。
发表于 2005-3-12 14:43:15 | 显示全部楼层
fscanf ("%as", s);
似乎这样并不能改变 s 的值啊,那么如何为 s 分配空间呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-12 21:09:18 | 显示全部楼层
Post by BenBear
fscanf ("%as", s);
似乎这样并不能改变 s 的值啊,那么如何为 s 分配空间呢?

哎呀,写错了,非常抱歉。应该是这样:
  1. char *s = NULL;
  2. FILE *fp = stdin;
  3. fscanf(fp, " %as", &s);
  4. /* using s */
  5. free(s);
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表