注册 登录
编程论坛 C语言论坛

程序运行不了,麻烦指教一下

huaheshang 发布于 2020-02-09 03:00, 2014 次点击
#include"stdio.h"
#include"string.h"
char *dele(char *s,int n,int len)
{
   int i,j=0;
   char jh[100]={0};
   for(i=0;i<n;i++)
   {
      jh[i]=s[j];
      j++;
    }

   while(s[j+len]!='\0')
   {
       jh[i]=s[j+len];
        i++;
        j++;
   
   }
   jh[i]='\0';
   return (jh);
}
int main()
{
  int n,len;
  char str[100]={0};
  char *s;
  puts("字符串:");
      gets(str);
      puts("开始处:");
      scanf("%d",&n);
      getchar();
      puts("个数:");
      scanf("%d",&len);
      getchar();
      puts("改变后的字符串:");
      s=dele(str,n,len);
      printf("%s",*s);
      getchar();
      getchar();
      return 0;
}
8 回复
#2
吹水佬2020-02-09 04:29
dele返回的jh在dele执行完就会被释放
#3
林月儿2020-02-09 07:26
是报错还是停在哪一步了?
#4
huaheshang2020-02-09 09:41
没报错,最后一步,不出结果

#5
huaheshang2020-02-09 09:43
回复 2楼 吹水佬
请问一下,可以修改吗,可以的话,如何修改
#6
吹水佬2020-02-09 09:59
以下是引用huaheshang在2020-2-9 09:43:52的发言:

请问一下,可以修改吗,可以的话,如何修改

如果可不保留原str,直接修改str。
在dele函数动态分配堆空间存放结果并返回地址
在dele外定义存放结果的空间并作为dele的输入/输出参数和返回地址
另:
printf("%s",*s);
改为:
printf("%s",s);
#7
huaheshang2020-02-09 10:52
回复 6楼 吹水佬
谢谢!
#8
纯蓝之刃2020-02-09 11:11
程序代码:
#include <stdio.h>

char *dele(char *s,int n,int len)
{
    int i;
    static char jh[100]= {0};   //必须使用static静态变量,否则子函数返回时,局部变量销毁,返回地址无意义
    for(i=0; i<len; i++)
    {
        if(s[n]!='\0')
            jh[i]=s[n++];
        else
            break;
    }
    jh[i]='\0';
    return (jh);
}
int main()
{
    int n,len;
    char str[100]= {0};
    char *s=NULL;
    puts("字符串:");
    gets(str);
    puts("开始处:");
    scanf("%d",&n);
    getchar();
    puts("个数:");
    scanf("%d",&len);
    getchar();
    puts("改变后的字符串:");
    s=dele(str,n,len);
    printf("%s",s);
    getchar();
    getchar();
    return 0;
}
#9
huaheshang2020-02-09 16:49
回复 8楼 纯蓝之刃
谢谢,学习啦!
1