论坛: 编程破解 标题: 在C语言中出现这样的错误是什么意思啊 复制本贴地址    
作者: 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号