gpt4 book ai didi

将用户输入字符串与存储在指针中的字符串进行比较。 C

转载 作者:行者123 更新时间:2023-11-30 14:49:21 25 4
gpt4 key购买 nike

我正在尝试编写一个程序来将用户输入的内容与存储在指针中的单词进行比较。代码如下

int c_s(char*, char*);

int main()
{
printf("Hate crime reporting system\n\n\n");

printf("If the crime you are reporting is an emergency,\nplease call 999, do
not proceed any further with this form\n\n\n\nPlease press enter to confirm
you have read the above and continue\n");
char enter = 0;
while (enter != '\r' && enter != '\n') { enter = getchar(); }


int a;
long long int g;
char *b, *e;
char *c = "witness";
char *d = "yes";
*c = (long long int) &g;


printf("Are you a victim or witness of the crime?\nPlease answer
victim/witness\n");}
scanf("%s", b);
int r = strcmp (b, c);
if(r == 0){
printf("Do you know who the witness is? Please answer yes/no\n");}
scanf("%s", d);
int f = strcmp(e, d);
if (d = "no") goto NEXT;
if(e == 0){
printf("Please enter their details including phone number and
address");}

NEXT:

当用户对“你是受害者还是证人”这个问题回答“证人”时,我希望代码继续并询问下一个问题,然后如果他们对"is"或“否”回答"is"或“否”,则再次询问问题“你知道证人是谁吗?”。当我运行此代码时,我收到溢出错误。我是编码新手,因此如果有人可以提供有关如何完成这项工作的示例代码,我将不胜感激。我不确定是否我使用了错误的指针或者我是否应该使用数组?

有人可以解释一下我如何将其设为 if 语句,这意味着如果用户输入“受害者”作为上述问题的答案,程序将继续“下一步:”

最佳答案

在我们解决字符串问题之前,请先看一下这一行:

printf("Are you a victim or witness of the crime?\nPlease answer victim/witness\n");}

它以 } 结尾,这似乎与 main 的开头匹配。至此,您已经结束了 main 函数,其余代码甚至不是函数的一部分。这可能甚至无法编译。

<小时/>

要获取字符串输入,您必须确保有可用于该字符串的内存:

char *b;     // WRONG: Uninitialized pointer.
char b[500]; // CORRECT: b can hold up to 499 bytes (+ one \0 at the end)
scanf("%s", b); // Get input into the memory you declared.
<小时/>

此外,您必须确保内存可写:
这个问题比较微妙,很多C程序员都很难解决

char *d = "yes";     // WRONG: "yes" is a constant string in your program, it cannot be changed.
char d[200] = "yes"; // CORRECT: d is 200 bytes, and is initially set to "yes". It can be changed later.
<小时/>

即使在程序的某些部分正确使用了 strcmp 之后,您仍然尝试这样做:

if (d = "no") goto NEXT;
  • 不能在 C 中以这种方式进行字符串比较。
  • 即使可以,它也会使用 == 而不是单个 =
  • 切勿使用 goto (除非您希望受到 velociraptor 的攻击)
<小时/>

在这一行中,您引用了变量e,但从未将其设置为值。

int f = strcmp(e, d);

在这一行中,您将 e 视为整数,但它被声明为 char*
(它仍然没有有效值)

if(e == 0) {

关于将用户输入字符串与存储在指针中的字符串进行比较。 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49632479/

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