|
![]() | 作者: lovejiang [lovejiang]
![]() |
登录 |
请帮下啊 尽快的给的回复啊 #include <stdio.h> typedef struct{ char a[100]; int len; }orderstring; orderstring *sub(r1,i,j) orderstring *r1; {int h; orderstring *r; for(h=0;h<j;h++)r->a[h]=r1->a[h+i]; r->len=j; r->a[r->len]='\0'; return(r); } void main() { orderstring *s; int i,j,k; char c; printf("enter your name\n"); scanf("%d%d",&i,&j); s->len=9; for(k=0;k<s->len;k++)s->a[k]='c++'; printf("%s",sub(s,i,j)); } 却出现这样的possible use of 'r'before definition in function sub错误提示 [此贴被 lovejiang(lovejiang) 在 02月16日14时57分 编辑过] [此贴被 lovejiang(lovejiang) 在 02月16日15时27分 编辑过] [此贴被 lovejiang(lovejiang) 在 02月16日19时10分 编辑过] [此贴被 lovejiang(lovejiang) 在 02月16日19时11分 编辑过] [此贴被 lovejiang(lovejiang) 在 02月16日19时12分 编辑过] |
地主 发表时间: 04-02-16 14:56 |
![]() | 回复: blegding [blegding] ![]() |
登录 |
写的乱七八糟~!!~看的类四了~!!~![]() ![]() ![]() ![]() |
B1层 发表时间: 04-02-16 17:19 |
![]() | 回复: lovejiang [lovejiang] ![]() |
登录 |
我改了一下啊 再来看一下啊 |
B2层 发表时间: 04-02-16 19:25 |
![]() | 回复: xiean [xiean] ![]() |
登录 |
orderstring *sub(r1,i,j) orderstring *r1; {int h; ?? |
B3层 发表时间: 04-02-17 03:19 |
![]() | 回复: xiean [xiean] ![]() |
登录 |
你这程序写来干嘛的? [root@vm root]# cat test.c #include <stdio.h> typedef struct { char a[100]; int len; } orderstring; orderstring sub(orderstring r1, int i, int j) { int h; orderstring r; for(h = 0; h < j; h++) r.a[h] = r1.a[h+i]; r.len = j; r.a[r.len] = '\0'; return(r); } int main() { orderstring s; int i, j, k; char c; printf("enter your name\n"); scanf("%d %d", &i, &j); s.len = 9; for(k = 1; k < s.len; k++) s.a[k] = 'c'; s = sub(s, i, j); printf("%s", s.a); } [root@vm root]# gcc -o test test.c [root@vm root]# ./test enter your name 1 2 cc 存在的错误,嗯,想想看 char c; 从没用过 scanf("%d%d",&i,&j); 这句,系统如何判断什么是 i 的,什么是 j 的? s->a[k]='c++'; 这句两个错 printf("%s",sub(s,i,j)); sub 返回的是结构指针,如何能 %s printf? r->a[h]=r1->a[h+i]; 这句也同样有错,嗯,和指针相关的 思考一下,为啥在这里直接用结构方便,而不用结构指针呢? s->a[k] 指哪去了呢? |
B4层 发表时间: 04-02-17 03:52 |
![]() | 回复: lovejiang [lovejiang] ![]() |
登录 |
q多谢了啊 不过为什么用指针不行呢 |
B5层 发表时间: 04-02-17 16:24 |
![]() | 回复: lovejiang [lovejiang] ![]() |
登录 |
#include <stdio.h> typedef struct{ char a[100]; int len; }orderstring; orderstring *sub(orderstring *r1,int i,int j) {int h; orderstring *r; for(h=0;h<j;h++)r->a[h]=r1->a[h+i]; r->len=j; r->a[r->len]='\0'; return(r); } void main() { orderstring *s; int i,j,k; char c; printf("enter your name\n"); scanf("%d%d",&i,&j); s->len=9; for(k=0;k<s->len;k++)s->a[k]='c'; printf("%s",sub(s,i,j)); } 我把程序改成这样就可以执行了啊 不过只要把C改成C++就错了啊 这是为什么呢难道不能为s->a[k]赋予连续的字符吗我是说用这个循环 |
B6层 发表时间: 04-02-17 17:17 |
![]() | 回复: xiean [xiean] ![]() |
登录 |
自己去试验一下,试着自己寻找答案吧。。。因为,如果要说得让你能明白,也不是简单的事,因为你写的代码。。。哎。。。要不是昨晚发疯。。。都没打算看的。。太复杂了 |
B7层 发表时间: 04-02-17 17:18 |
![]() | 回复: 286 [unique] ![]() |
登录 |
与邪安不同,我本来没打算看,但后来看了两遍后发疯了。。。。。。 顶楼兄弟,这样吧,把你的想法说出来,我们给你再重新编一个,并告诉你如何做。 |
B8层 发表时间: 04-02-18 09:23 |
![]() | 回复: lovejiang [lovejiang] ![]() |
登录 |
很抱歉让你们都觉得不好受 其实我现在在学数据结构 所以吗就用顺序存储方式来写一下这个程序 可是却出现这样的错误 我现在也不能用C语言编出什么好的程序 我只希望你能给我一些建议来学C语言 学了数据结构以后我该怎么去学C呢 |
B9层 发表时间: 04-02-19 09:25 |
![]() | 回复: TomyChen [quest] ![]() |
登录 |
http://www.20cn.net/cgi-bin/club/show.pl?key=coNZcpCDjlhU&cat=tech&forum=code&page=1&position=2778&id=1077154198 |
B10层 发表时间: 04-02-19 09:30 |
![]() | 回复: 286 [unique] ![]() |
登录 |
其实也没什么,你出的错是初学者常出的错。 注意以下: 声明指针时,切记你只声明了一个指针而已。而没把实际的结构申请过来(如果是面向对象,这叫实例化。),所以直接使用指针是错的。 比如: struct a { ...... } b,*p; 在这一句中,b才是结构a在内存中实实在在的体现。p只是一个指针。 如果没有b,而只有p,你让他指向哪呢?所以,在没搞懂指针是干什么之前,尽量不要用,而直接实例化。 |
B11层 发表时间: 04-02-19 09:32 |
![]() | 回复: xiean [xiean] ![]() |
登录 |
286兄说得专业多了,是不是给人上过课啊?偶的意思也差不多,但就是说出来,就不是让人这么容易理解 ![]() |
B12层 发表时间: 04-02-19 13:44 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号