我看不太懂我到底那里错了(进来看图一目了然)
我tm被折腾了一个小时,也都去查过了,看不明白,重启也重启过了
发完整代码,不要只发个图 #include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX 18
int xipai(int);
void fapai(int);
int type_j(int);
int main()
{
char* player;
unsigned pai = 54;
int i, p, j;
for (i = 0; i < 3; i++)
{
printf("请输入%d号玩家的ID:", i + 1);
scanf_s("%s",player);
}
for (i = 0; i < 3; i++)
{
printf("%s", player);
for (j = 0; j < MAX; j++)
{
p = xipai(pai);
putchar('\b');
fapai(p);
}
printf("\n");
}
}
int xipai(int pai)
{
int p;
time_t t;
srand((unsigned)time(&t));
p = rand() % pai - 1;
p++;
return p;
}
//判断,可跳过
void fapai(int p)
{
char* type = NULL;
if (p <= 10) type = "方";
else if (p <= 20)
{
type = "梅";
p = p % 10;
}
else if (p <= 30)
{
type = "红";
p = p % 20;
}
else if (p <= 40)
{
type = "黑";
p = p % 30;
}
else if (p <= 43)
{
type = "方";
type_j(p);
}
else if (p <= 46)
{
type = "梅";
type_j(p);
}
else if (p <= 49)
{
type = "红";
type_j(p);
}
else if (p <= 52)
{
type = "黑";
type_j(p);
}
else if (p == 53)
{
printf("小王");
return;
}
else if (p == 54)
{
printf("大王");
return;
}
printf("%s", type);
printf("%c", p + 48);
}
int type_j(int p)
{
p = p % 40;
switch (p % 3)
{
case 1:return 81 - 48;
case 2:return 75 - 48;
case 0:return 74 - 48;
}
}
我真的就是见了鬼,我慢慢写得跟规则一样,却给我报错 本帖最后由 jackz007 于 2020-2-20 19:25 编辑
player 是按指针数组的数据类型定义的,只能存放 3 个字符型指针,并没有存放字符串的空间,出错的原因是,s_scanf("%s" , player) ; 语句把键盘输入的字符保存到了 player 所指向的地址空间,而 player 并没有经过赋值,所以,这个地址绝对是无效的,出错是跑不脱的。
这些语句:
. . . . . .
char * player ;
. . . . . .
s_scanf("%s" , player) ;
. . . . . .
改成下面这样试试
. . . . . .
char player ;
. . . . . .
s_scanf("%s" , player , 256) ;
. . . . . . jackz007 发表于 2020-2-20 19:12
这些语句:
改成下面这样试试
我获得的不应该是一个地址么,为什么我还需要规定这个后面的元素个数,求解答 BIYU 发表于 2020-2-20 19:24
我获得的不应该是一个地址么,为什么我还需要规定这个后面的元素个数,求解答
变量 player 申请的空间必须能够保存键盘输入数据。
char * player ;
定义 player 为有 3 个元素的一维指针数组,对于 32 位的程序而言,每个指针的长度占用 4 个字节,那么,player 申请到的空间是 4 * 3 = 12 个字节;
char player ;
定义 player 为 256 x 3 的二维字符数组,每个字符占用 1 个字节,那么,player 申请到的空间是 256 * 3 = 768 字节。
由此可见,两种定义申请到的 player 空间大小完全不同,性质和用途也完全不同。 jackz007 发表于 2020-2-20 19:36
变量 player 申请的空间必须能够保存键盘输入数据。
定义 player 为有 3 个元素的 ...
好的,明白了,谢谢
页:
[1]