免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2973 | 回复: 14
打印 上一主题 下一主题

一个变量的问题,在线等 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-16 09:28 |只看该作者 |倒序浏览
我在一个小程序中定义了一个字符数给变量,
char *tmpStr[128];
memset(tmpStr, 0, sizeof(tmpStr));
然后 在一个字符串 buf = "95568|100314|0311|"中用函数提取子字符串,
我用的是
sscanf(buf , "%[^|]", tmpStr);
然后我用GDB跟踪的时候,打印tmpStr;得到 的结果是:
(gdb) p tmpStr
$8 = "95568", '\0' <repeats 122 times>


我想问的是:
为什么会得到这样一个结果,这个结果代表的具体意思?
为什么 后面还有一个'\0'?
后面的<repeats 122 times>又代表什么?
这些在一些变量上是没有的,请大家给解说一哈,谢谢

论坛徽章:
0
2 [报告]
发表于 2008-10-16 09:36 |只看该作者
原帖由 fir1983 于 2008-10-16 09:28 发表
我在一个小程序中定义了一个字符数给变量,
char *tmpStr[128];
memset(tmpStr, 0, sizeof(tmpStr));
然后 在一个字符串 buf = "95568|100314|0311|"中用函数提取子字符串,
我用的是
sscanf(buf , "%[^| ...


这是个字符串,当然应该\0结尾
后面的<repeats 122 times>又代表后面122个字符全是\0

论坛徽章:
0
3 [报告]
发表于 2008-10-16 09:48 |只看该作者
原帖由 eveson 于 2008-10-16 09:36 发表


这是个字符串,当然应该\0结尾
后面的又代表后面122个字符全是\0


谢谢
原来是这样
个人觉得C语言中内存是最麻烦的,看了好些的文章,现在还是出错。
谢谢指点
呵呵

论坛徽章:
0
4 [报告]
发表于 2008-10-16 10:07 |只看该作者
原帖由 eveson 于 2008-10-16 09:36 发表


这是个字符串,当然应该\0结尾
后面的又代表后面122个字符全是\0



还有一个问题,怎样去掉字符串最后的'\0'啊?
请教一下

论坛徽章:
0
5 [报告]
发表于 2008-10-16 13:06 |只看该作者

回复 #4 fir1983 的帖子

char *tmpStr[128];
为什么要定义成指针的指针呢?
应该要定义成:char tmpStr[128];
不然
memset(tmpStr, 0, sizeof(tmpStr));应该会有问题。

其实这样更方便

char tmpStr[128]={'\0'};

论坛徽章:
0
6 [报告]
发表于 2008-10-16 13:14 |只看该作者

回复 #5 andrew913 的帖子

貌似我错了
char *tmpStr[128];

char tmpStr[128];
是一样的,

谁能解答下不?

论坛徽章:
0
7 [报告]
发表于 2008-10-16 13:57 |只看该作者

回复 #4 fir1983 的帖子

为什么要去掉'\0',程序已经运行完毕,
以结束符结尾,之后的122个结束符是程序自己加上去的
因为已经为tmpStr分配了空间:
char *tmpStr[128]

不知道你想要个什么结果?

[ 本帖最后由 ast_224 于 2008-10-16 15:03 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2008-10-16 16:55 |只看该作者
原帖由 andrew913 于 2008-10-16 13:14 发表
貌似我错了
char *tmpStr[128];

char tmpStr[128];
是一样的,

谁能解答下不?


这两个一样吗?

论坛徽章:
0
9 [报告]
发表于 2008-10-16 16:59 |只看该作者
怎么会一样, 32系统指针数组的size会是char的4倍吧

论坛徽章:
0
10 [报告]
发表于 2008-10-16 17:42 |只看该作者

回复 #9 helloCU 的帖子

能不能帮忙详细解释下
char *tmpStr[128];

char tmpStr[128];
有没有什么区别,用的时候竟然是一样的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP