sscanf函数的用法疑问

rainbow6666 2011-10-25 02:59:51
char* pstr= "there 2 to 20:15:06 (\"成功登录服务器\") 正确";
char str1[100];
char str2[100];
char str3[100];
int iDate;
sscanf(pstr, "there %d to %s %s %s",&iDate,str1,str2,str3);
printf( "%d %s %s %s \r\n",&iDate,str1,str2,str3);
...全文
66 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
大海啊全是水 2011-10-25
  • 打赏
  • 举报
回复
%[^:] ^非的意思。。取到冒号为至
Lovey2010 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhao4zhong1 的回复:]

C/C++ code
#include <stdio.h>
char* pstr= "there 2 to 20:15:06 (\"成功登录服务器\") 正确";
char str1[100];
char str2[100];
char str3[100];
int iDate;
void main() {
sscanf(pstr, "there %d to %[^:]:%[^:]:%……
[/Quote]

请问“sscanf(pstr, "there %d to %[^:]:%[^:]:%s",&iDate,str1,str2,str3);”中的“%[^:]:%[^:]:%s”该怎么去理解啊?
赵4老师 2011-10-25
  • 打赏
  • 举报
回复
stdout通常是以文本方式而非二进制方式打开的。

不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了

\r可能会被替换为\r\n
\n也可能会被替换为\r\n

表示回车通常用\n

除非是在cprintf里面\r和\n不是一回事。
vivi爱学习 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhao4zhong1 的回复:]

C/C++ code
#include <stdio.h>
char* pstr= "there 2 to 20:15:06 (\"成功登录服务器\") 正确";
char str1[100];
char str2[100];
char str3[100];
int iDate;
void main() {
sscanf(pstr, "there %d to %[^:]:%[^:]:%……
[/Quote]

为嘛去掉那个\r啊?是不是在c里得用\r\t表示回车啊?
赵4老师 2011-10-25
  • 打赏
  • 举报
回复
#include <stdio.h>
char* pstr= "there 2 to 20:15:06 (\"成功登录服务器\") 正确";
char str1[100];
char str2[100];
char str3[100];
int iDate;
void main() {
sscanf(pstr, "there %d to %[^:]:%[^:]:%s",&iDate,str1,str2,str3);
printf("%d,%s,%s,%s\n",iDate,str1,str2,str3);
}
//2,20,15,06
七擒关羽 2011-10-25
  • 打赏
  • 举报
回复
sscanf(pstr, "there %d to %s %s %s",&iDate,str1,str2,str3);

改成printf(pstr, "there %d to %s %s %s",&iDate,str1,str2,str3);
薛定谔之死猫 2011-10-25
  • 打赏
  • 举报
回复
如另一贴回答

69,371

社区成员

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

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