c/c++语言开发共享使用函数返回字符串,自动变量被销毁,导致乱码,

在删除一个字符串中的指定字母,如:字符串 "aca",删除其中的 a 字母。这一C语言程序编写时,出现乱码。后发现 是使用了指针访问被销毁的局部变量。 将函数中的代码改为static。 还是C语言基础不够牢固! …

在删除一个字符串中的指定字母,如:字符串 “aca”,删除其中的 a 字母。这一c语言程序编写时,出现乱码。后发现

是使用了指针访问被销毁的局部变量。

#include <stdio.h>  #include <string.h>  #include <stdlib.h>    char* deletechar(char *ca, char c)  {      static char retc[50];///加入static将其放在全局变量区      //printf("%sn",retc);      char *rc;      int j = 0;      while(*ca != '') {          if(*ca != c) {              retc[j++] = *ca;          }          ca+=1;      }      retc[j]='';      //printf("%sn",retc);      rc=&retc[0];      return rc;///出现乱码的原因是retc被销毁  }  int main()  {      char str[50]="asqessafabna";      char c='a';      char *rc=deletechar(str,c);      printf("%sn",deletechar(str,c));      return 0;  }

将函数中的代码改为static。

 

还是c语言基础不够牢固!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/602246.html

(0)
上一篇 2021年5月11日
下一篇 2021年5月11日

精彩推荐