LinuxSir.cn,穿越时空的Linuxsir!

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

关于scanf的问题

[复制链接]
发表于 2007-1-25 11:32:50 | 显示全部楼层 |阅读模式
我想写一些数据到buffer里,首先想到的是用scanf("%s", buf);
但是有一个问题,就是如果数据很多,超过了buf的大小,就会出错
请问有什么好的解决办法吗?
发表于 2007-1-25 12:02:21 | 显示全部楼层
你确认没写错?是scanf?不是 sprintf?
先man 一下看看scanf是干吗的行吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-25 12:19:25 | 显示全部楼层
我的意思是从终端输入数据到buf里阿
回复 支持 反对

使用道具 举报

发表于 2007-1-25 12:26:21 | 显示全部楼层
抱歉,我误会你的意思了……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-25 12:27:57 | 显示全部楼层
是我开始没有说明清楚
回复 支持 反对

使用道具 举报

发表于 2007-1-25 12:58:21 | 显示全部楼层
用 %as。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-25 13:14:19 | 显示全部楼层
%as怎么用阿,我试过了,不行阿。
回复 支持 反对

使用道具 举报

发表于 2007-1-26 12:15:36 | 显示全部楼层
用fgets吧
回复 支持 反对

使用道具 举报

发表于 2007-1-26 12:24:50 | 显示全部楼层

  1. #include <stdlib.h>                                                            
  2. #include <stdio.h>                                                              
  3.                                                                                 
  4. int main()                                                                     
  5. {                                                                              
  6.     char *s = NULL;                                                            
  7.                                                                                 
  8.     scanf("%as", &s);                                                           
  9.     printf("%s\n", s);                                                         
  10.                                                                                 
  11.     free(s);                                                                    
  12. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2007-1-26 20:16:38 | 显示全部楼层
Post by khc

  1. #include <stdlib.h>                                                            
  2. #include <stdio.h>                                                              
  3.                                                                                 
  4. int main()                                                                     
  5. {                                                                              
  6.     char *s = NULL;                                                            
  7.                                                                                 
  8.     scanf("%as", &s);                                                           
  9.     printf("%s\n", s);                                                         
  10.                                                                                 
  11.     free(s);                                                                    
  12. }
复制代码

大哥,这里free(s); 什么意思啊?
回复 支持 反对

使用道具 举报

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

本版积分规则

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