繁体   English   中英

为什么我的角色功能崩溃?

[英]Why does my character function crash?

我正在一个旨在创建功能来执行不同操作的项目中,但是我无法实现其中一个功能。

int main()
{
    char str1[30] = "Hello";
    char str2[30] = "Goodbye old friend";
    char str3[30];

    char *p = strCopy(str3, "Annie");
    printf("(Annie) %s\n", p);

    p = strString(str3, "nn");
    printf("(nnie) %s\n", p);

    strCopy(str3, "HeloHellooo");
    p = strString(str3, "ello");
    printf("(ellooo) %s\n", p);

    return 0;
}

char *strCopy(char *s1, const char *s2)
{

   char *b = s1;

   while (*s2!='\0')
   {
      *s1 = *s2;
      s1++;
      s2++;
   }    
  *s1 = '\0';

  return b;

}


char *strString(const char *s1, const char *s2) // returns a string that starts with the characters in *s2. For example: char *strString ("Annie", "nn") should return "nnie".)
{
   char *test;
   char *b = test;  
   while (*s1 != '\0' && *s2 != '\0')
  {

      if (*s1 == *s2)
      {
         *test = *s1;
      }
      s1++;
      s2++;
   }

*test = '\0';      
return b;
}

当常量整数是仅有的两个参数时,我很难弄清楚如何在char * strString中返回值。 当我尝试时,程序崩溃。 请记住,参数,函数声明以及main()中的内容必须与编写的内容完全相同。 它是项目中提供给我的代码。 我只能操纵函数内部的内容。 我也不允许在我的任何函数中使用数组。

(* strString内的代码显然不是最终的。我只是在测试任何东西时都遇到麻烦,但是我不知道如何返回值。)

strString内部,您可以使用未初始化的指针test

char *b = test;   // oops

...

*test = *s1;      // oops

您可以从以下内容开始:

char *test = NULL;

然后,当您找到子字符串时,可以更新test 在任何时候,您都不想编写*test = ,因为您既不修改输入字符串,也不创建新字符串。 您应该返回一个可以找到子字符串的指向s1的指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM