在删除一个字符串中的指定字母,如:字符串 “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