标题:关于指针数组不能引用,求助
取消只看楼主
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
结帖率:77.78%
已结贴  问题点数:15 回复次数:10 
关于指针数组不能引用,求助
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
typedef struct
{
    char suit[10];
    char face[10];
}change;
change card[52];
char *face[]={"1","2","3","4","5","6","7","8","9","10","jack","queen","king"};
char *suit[]={"spade","hearts","clubs","diamonds"};

void start(change card[],char face[],char suit[])
{
    int a,b,c;
for(a=0;a<52;a++)
{
    int a;
    strcpy(card[a].face,face[a%13]);
    strcpy(card[a].suit,suit[a/13]);
}


int main()
{
    start(card,face,suit);
    return 0;
}


我用c-free编译器的: 它出现以下的东西  --------------------配置: mingw5 - CUI Release, 编译器类型: MinGW--------------------

检查文件依赖性...
正在编译 C:\Users\Administrator\Desktop\发牌模拟.c...
[Warning] C:\Users\Administrator\Desktop\发牌模拟.c:20: warning: passing arg 2 of `strcpy' makes pointer from integer without a cast
[Warning] C:\Users\Administrator\Desktop\发牌模拟.c:21: warning: passing arg 2 of `strcpy' makes pointer from integer without a cast
[Error] C:\Users\Administrator\Desktop\发牌模拟.c:29: error: syntax error at end of input

构建中止 发牌模拟: 1 个错误, 2 个警告

求帮助
搜索更多相关主题的帖子: change 
2011-03-22 23:29
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
得分:0 
没有人能帮助吗?
2011-03-23 06:51
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
得分:0 
回复 3楼 zanzan1986
那个发黑红梅那里我没有用余13,是用整除的,所以应该没有越界
2011-03-23 11:06
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
得分:0 
回复 4楼 zanzan1986
咦,在哪里吖,我刚才看了还是没看到,可以画出来吗?
2011-03-23 11:07
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
得分:0 
回复 7楼 zanzan1986
噢  是吖 ,谢了,    我刚加了,试了一下,但是还是会出现警告,而且更多了,不知道为什么?

--------------------配置: mingw5 - CUI Release, 编译器类型: MinGW--------------------

检查文件依赖性...
正在编译 C:\Users\Administrator\Desktop\发牌模拟.c...
[Warning] C:\Users\Administrator\Desktop\发牌模拟.c:20: warning: passing arg 2 of `strcpy' makes pointer from integer without a cast
[Warning] C:\Users\Administrator\Desktop\发牌模拟.c:21: warning: passing arg 2 of `strcpy' makes pointer from integer without a cast
[Warning] C:\Users\Administrator\Desktop\发牌模拟.c:28: warning: passing arg 2 of `start' from incompatible pointer type
[Warning] C:\Users\Administrator\Desktop\发牌模拟.c:28: warning: passing arg 3 of `start' from incompatible pointer type
正在连接...

完成构建 发牌模拟: 0 个错误, 4 个警告
生成 C:\Users\Administrator\Desktop\发牌模拟.exe

2011-03-23 12:41
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
得分:0 
回复 9楼 给力芬2010
应该初始化没问题的···
2011-03-23 17:35
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
得分:0 
回复 10楼 forever74
我试了一下改了,没重名,可是也还是不行····
2011-03-23 17:36
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
得分:0 
回复 13楼 zanzan1986
嗯嗯,我后来就改成这个
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
typedef struct
{
    char suit[10];
    char face[10];
}change;
change card[52];
char *face[]={"1","2","3","4","5","6","7","8","9","10","jack","queen","king"};
char *suit[]={"spade","hearts","clubs","diamonds"};

void start(change wcard[],char *wface[],char *wsuit[])//形参和实参尽量不要重名,不然的话有些编译器容易 报错
{
    int a,b,c;
    for(a=0;a<52;a++)
   {  
    int a;
    strcpy(wcard[a].face,wface[a%13]);
    strcpy(wcard[a].suit,wsuit[a/13]);
    }
}


int main()
{
    start(card,face,suit);
    return 0;
}



它没有报错或警告了,但是它在弹出控制台不久后,却说程序已停止工作什么的,是不是有什么地方越界什么之类的,还有我想问一下,char *suit[]这样的定义是不是可以看做是一个没有定义列大小的二维数组
2011-03-23 18:01
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
得分:0 
回复 16楼 zanzan1986
嗯嗯 好的,太感谢了,不过12点之后学校好像已经断网了,只能明天才看到
2011-03-23 20:55
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
得分:0 
回复 18楼 zanzan1986
噢 ,太感谢了···
2011-03-24 08:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-334463-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.194790 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved