zoukankan      html  css  js  c++  java
  • 使用函数返回字符串,自动变量被销毁,导致乱码,

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

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

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

    将函数中的代码改为static。

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

  • 相关阅读:
    简易计算机
    作业-继承
    exception
    作业-窗口
    作业-数字
    作业8
    作业9-1
    作业9-2
    book
    成绩录入
  • 原文地址:https://www.cnblogs.com/yongleili717/p/11383829.html
Copyright © 2011-2022 走看看