社区
C语言
帖子详情
大家来找错?
emmix
2008-07-31 06:50:10
Exercise 1-5 What is wrong with this excerpt?
int read(int *ip) {
scanf("%d\n",ip);
return *ip;
}
...
insert(&graph[vert], read(&val), read(&ch));
请问这段程序代码有什么错误。摘录自《程序设计实践》第一章习题1-5。
...全文
330
31
打赏
收藏
大家来找错?
Exercise 1-5 What is wrong with this excerpt? int read(int *ip) { scanf("%d\n",ip); return *ip; } ... insert(&graph[vert], read(&val), read(&ch)); 请问这段程序代码有什么错误。摘录自《程序设计实践》第一章习题1-5。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
31 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
emmix
2008-10-17
打赏
举报
回复
正确解答,请参见网址:
http://topic.csdn.net/u/20070513/21/d5ade1a8-7b79-4a12-8ac3-021a71c4267f.html
emmix
2008-08-04
打赏
举报
回复
我看得书是<The Practice of Programming> 作者 Brian W. Kernighan 和Rob Pike
第一章的习题1-5
colxy
2008-08-04
打赏
举报
回复
scanf("%d\n",ip); //在scanf中存在缓冲区问题,可这样来使用:
a、 while(scanf("%d",ip) == 1)
fflush(stdin);
b、scanf("@%d",ip);//@代表一个空格
c、scanf("%d%*d",ip);
以上几种方法可以防止缓冲区问题。
insert(&graph[vert], read(&val), read(&ch));
//如果是函数调用可以这样;但若是函数声明,则少了函数的返回类型
祝你好运!
小树他爹
2008-08-04
打赏
举报
回复
scanf("%d\n",ip);
应该还是错在这儿,输入是得要多输入一个回车,而这个回车不能直接敲,得在前面家一个‘\’
比如想输入12 得这样”12\回车“
如果不加反斜杠会一直不出结果(等待输入)
c_bee
2008-08-02
打赏
举报
回复
指针ip是调用者传进来的,不是野指针
如果是说这个问题的话,那考的就是调用问题了
haohaokingXP
2008-08-02
打赏
举报
回复
哈哈,挑刺,发现了点异常~~
int read(int *ip) {
scanf("%d\n",ip);
return *ip;
}
在这个时候使用scanf函数的时候,很容易造成缓冲区溢出。
ip是个野指针,
haohaokingXP
2008-08-02
打赏
举报
回复
看不来异常
哈哈,是不是编码规范问题?
九十度黑
2008-08-02
打赏
举报
回复
并非语法错误?那作者可能想说:函数参数是没有必要的,int read(void){}就可以了。(纯属猜测)
你看的书作者是谁?我找找,看看。
emmix
2008-08-02
打赏
举报
回复
我个人感觉是没有错误的。分析如下:
int *a; // 假设a = 0xfff01
read(a); // 编译器会把a中得值考贝到局部变量_a中, 则_a = a = 0xfff01 是一个地址
{
scanf("%d",_a); //从键盘中给地址0xfff01(_a存储)中存入一数值
return *_a; // 把地址0xfff01中存储的值返回。
}
所以我觉得程序按常理来分析应该没有错。希望大家能看看这本书相对应的章节,找到到底是什么问题。或许是我们编程中
视而不见的一些错误,但并非是语法错误。
emmix
2008-08-02
打赏
举报
回复
全部内容我都贴出来了,书上也没有答案。是《程序设计实践》这本书第一章的习题1-5。大家可以参考以下。
jzbem
2008-08-01
打赏
举报
回复
不确定,等高手解答
superhackerzhang
2008-08-01
打赏
举报
回复
如果ip指向的是malloc分配的空间应该不会有问题,若是指向一个变量,则这个变量值会被改变的
mAIroC
2008-08-01
打赏
举报
回复
[Quote=引用 6 楼 hai040 的回复:]
这是全部代码?
[/Quote]
up
hai040
2008-08-01
打赏
举报
回复
这是全部代码?
大刀顽童
2008-08-01
打赏
举报
回复
[Quote=引用 1 楼 lixun_21 的回复:]
C/C++ codescanf("%d\n",ip);//要吧\n去掉 不然输入时会要求多输入一个回车符!!
[/Quote]
emmix
2008-08-01
打赏
举报
回复
scanf("%d\n",ip); //要吧\n去掉 不然输入时会要求多输入一个回车符!! 这个回车是我误打上去的,除此之外还有什么错误?
vinuslong
2008-08-01
打赏
举报
回复
好像没有错误
strongpan
2008-08-01
打赏
举报
回复
没明白。。有结论嘛?
novice2008
2008-08-01
打赏
举报
回复
是insert错了,声明没类型。。。
novice2008
2008-08-01
打赏
举报
回复
我刚试了下
#include <stdio.h>
int read (int *);
int main()
{
int * ip;
int n;
n = read(ip);
printf ("%d", n);
return 0;
}
int read(int *ip) {
scanf("%d",ip);
return *ip;
}
完全可以运行。。。
加载更多回复(11)
快手视频素材在哪找?各大平台视频素材批量下载
快手视频素材在哪找,易撰素材库,可以下载快手视频素材,除了快手这个平台,还可以下载抖音,美拍,西瓜等等平台视频,除了视频还可以批量下载爆文素材,各大主流平台的内容都可以进行采集,给大家提供素材来源。...
无损音乐从哪找?五个网站+免费下载,你确定不来看看?
hi,大家好我是技术苟,每天晚上22点准时上线为你带来实用黑科技!由于公众号改版,现在的公众号消息已经不再按照时间顺序排送了。因此小伙伴们就很容易
错
过精彩内容。喜欢黑科技的小伙伴,可以将黑科技百科公众号设...
考了华为认证,如何找工作?能进哪些公司?有没有前景?
男怕入
错
行,女怕嫁
错
郎
汉字读半边,怎么会
错
上天?
汉字读半边,怎么会
错
上天? 俗话说,汉字读半边,不会
错
上天。 下面是叶先生的词: ...叶先生是词学大家,不过也有网友说没看出写湖。 当然,我不说词,只想说说“浣”的读音。 “浣”,
程序员找工作难吗?我用亲身经历来告诉大家
所以在这里强烈地奉劝一句,大家如果还有工作的千万别辞职,真的如果实在不想呆了,也一定要先找好下家。不仅可以保证收入不会中断,还可以给自己留足够的时间和心理准备去寻找更好的机会。 但是,如果你已经失业了...
C语言
70,035
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章