免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: wenhuaixiang
打印 上一主题 下一主题

谁帮忙改下程序错误谢谢了~考虑很多天了 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-08-30 21:05 |只看该作者
原帖由 westgarden 于 2006-8-29 21:03 发表
UNIX Systems Programming
- Communication Concurrency and Threads, 2nd Ed (2003)

2.6 Argument Arrays中的例子。

程序本身没什么错误。
只是你想用编程中的hacker手段来测试罢了。
看来你对ch ...


你真厉害~看来你把这本书读完了,我还在看呢。但是给你我举的例子我还是没明白你
想说什么。
确实char *p确实是遇到"\0"就不输出了,但是既然书上面举的例子是这样的,应该是
按照既定目标来实现啊。我理解的他这个例子就是把程序后面的参数输出出来,但是程序
没有这么输出出来。
还有就是为什么数组指针他在计算地址的时候他怎么知道地址段的,他的汇编代码是什么样的。
char *p[];
char *q = p;
既然他们的地址相同,但是为什么用这个函数strtok就是不能把中间的"\0"分出来呢

[ 本帖最后由 wenhuaixiang 于 2006-8-30 21:14 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2006-08-31 18:15 |只看该作者
顶下~希望那位westgarden在来帮下忙

论坛徽章:
0
13 [报告]
发表于 2006-08-31 20:29 |只看该作者
前面我说的都是废话。

看下面:
char *strtok(char *restrict s1, const char *restrict s2);
s1中会有'\0'吗(末尾的不算)?不会!

argv[1]中会有'\0'吗?不会!

所以,你那种情况是不会发生的!

论坛徽章:
0
14 [报告]
发表于 2006-08-31 20:40 |只看该作者
原帖由 wenhuaixiang 于 2006-8-30 21:05 发表
看来你把这本书读完了,我还在看呢。

主题章反复看过几遍(2~3遍),项目章看了1、2个而已。

此书确实是很好的教科书,如果你手头有POSIX v3手册和
Advanced Programming in the UNIX Environment - 2nd Edition
就更好了。

论坛徽章:
0
15 [报告]
发表于 2006-09-01 12:58 |只看该作者
原帖由 westgarden 于 2006-8-31 20:29 发表
前面我说的都是废话。

看下面:
char *strtok(char *restrict s1, const char *restrict s2);
s1中会有'\0'吗(末尾的不算)?不会!

argv[1]中会有'\0'吗?不会!

所以,你那种情况是不会发生的!


好像还是有点问题
问题是在程序中启动如果参数是123 qwe asd
那也就是*argv[]={"123","qwe","asd"}了
那每个argv中最后也就是有"\0"了啊
所以argv地址中按照连续字符串存储应该是123'\0'qwe'\0'asd'\0'
不知道我这么分析对吗?

还有就是看unix高级编程是不是也能拿这个标准的posix在linux地下一样的使用吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP