hangfrieddays 发表于 2021-12-21 10:54:45

返回值是字符类型指针

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* delete (char*str,char c);
int main()
{
    char str={0};
    gets(str);
    char ch;
    scanf("%c",&ch);
    printf("%p",delete(str,ch));
    printf("%s",delete(str,ch));
    return 0;
}
char* delete (char*str,char c)
{
    char ch={0};
    int i=0,k=0;
    while(str)          //完成对str中c字符的删除
    {
      if(str!=c)
      {
            ch=str;
            k++;
      }
      i++;
    }
    return ch;                   //返回操作后的字符串地址
}
请问为什么我这样写,最后在主函数里面调用显示NULL呢,也无法打印字符串

hangfrieddays 发表于 2021-12-21 11:00:41

哦,懂了。我定义的ch数组只是在delete函数中,应该在主函数里面定义ch数组{:10_257:}

傻眼貓咪 发表于 2021-12-21 11:05:25

static

傻眼貓咪 发表于 2021-12-21 11:06:24

#include <stdio.h>

char* delete(char* str, char c){
        static char res; // 改成静态
        int i = 0, j = 0;
        while(str){
                if(str != c)
                res = str;
                i++;
        }
        return res;
}

int main(){
        printf("%s", delete("banana", 'a'));
        return 0;
}
页: [1]
查看完整版本: 返回值是字符类型指针