gpt4 book ai didi

c - 字符串数组和指针数组问题

转载 作者:行者123 更新时间:2023-11-30 15:31:03 27 4
gpt4 key购买 nike

这里完全是新手。这可以编译,但仍然会出现错误并且不起作用。我真的不太了解类和参数

程序应该首先请求 2 个名称,这些名称作为指针保存在字符串 str 数组中(不知道我实际上在那里做什么)。然后它在不同的类中滚动骰子并显示前一个类的字符串,因此 rolldice 应该从 getstrings 接收参数,而 rolldice 应该向主类提供参数。我用//来标记代码中的重要点以及我拥有的其他选项。

#include <stdio.h>
#include <time.h>

getstrings()
{
char *str[2]; // or also make a string of pointers int *ptr[2];
printf("\n1st player:\n");
scanf("%s",&str[1]);
printf("\n2nd player:\n");
scanf("%s",&str[2]);
system("pause");

//ptr[1]=&str[1];
//ptr[2]=&str[2];

}

rolldice(char *str)
{
int dice1,dice2;
srand(time(NULL)); // does this really make rand() actually random???
dice1 = (rand()%6)+1;
printf("%s rolls %d",&str[1],dice1); //a dice for each player
dice2 = (rand()%6)+1;
printf("%s rolls %d",&str[2],dice2);

}

void main(int dice1,int dice2,char *str)
{
getstrings();
system("pause");
rolldice(*str); //when calling functions should i define the variable type?
if (dice1<dice2){
printf("%s wins",str[1]); //here should i use *str[1] or &str[1]?

}
else if (dice2<dice1) {
printf("%s wins",str[2]); //or *ptr[2] or &ptr[2] if enabled

}
else {
printf("tie, play again");
rolldice(*str); // if tied they play again
};
};

我收到编译器警告

[警告]传递“rolldice”的参数 1 使指针来自整数而不进行强制转换[默认启用]

调用 rolldice 时,两者都在 rolldice(*str) 的主类中
这里是图片链接 Image

最佳答案

以下是部分问题列表:

  • char *str[2] 只能通过索引 0 和 1 安全访问

  • str[0] 未初始化为指向有效的内存地址

  • str[1] 未初始化为指向有效的内存地址

  • srand(time(NULL)) 只能调用一次

  • 函数 main 中的非标准参数列表

  • 函数 getstrings 中没有返回值类型

  • 函数rolldice中没有返回值类型

关于c - 字符串数组和指针数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25152534/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com