C++中怎么输出一个数组啊,我的这个怎么运行不了。

#include#includechardelch(charstr[],charc){inti=0,j=0;charc1[20];for(i=0;i!='\0';i++)... #include#includechar delch(char str[],char c){ int i=0,j=0; char c1[20]; for(i=0;i!='\0';i++) { if(str[i]!=c) { c1[j]=str[i]; j++; } } c1[j]='\0'; return c1;}main(){ char string[20],ch; gets(string); scanf("%c",&ch); printf("%s",delch(string,ch));} 展开
 我来答
mr_shj
2015-06-07 · TA获得超过2681个赞
知道大有可为答主
回答量:1665
采纳率:94%
帮助的人:1374万
展开全部
#include <stdio.h>   //要加上头文件
char *delch(char str[],char c){
int i=0,j=0;
static char c1[20]; //函数退出时,cl的保存的内容将丢弃,在此加上static,让程序不丢弃。
for(i=0;str[i]!='\0';i++) { //这句也改了一下
if(str[i]!=c){
c1[j]=str[i];
j++; }
}
c1[j]='\0';
return c1;
}
int main(){
char string[20],ch;
gets(string);
scanf("%c",&ch);
printf("%s",delch(string,ch));
}
cabeng
2015-06-07 · TA获得超过755个赞
知道小有建树答主
回答量:801
采纳率:55%
帮助的人:490万
展开全部
推荐选楼上的。改的很好,注释也很清楚。
只是,楼上的把函数返回值类型也改了,没有加以注释。这个加上就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鹿蜀山海经
2015-06-07 · TA获得超过142个赞
知道小有建树答主
回答量:128
采纳率:0%
帮助的人:93.7万
展开全部
#include<stdio.h>
#include<string.h>
char delch(char str[],char c)
{
int i=0,j=0;
char c1[20];
for(i=0;i!='\0';i++)
{
if(str[i]!=c)
{
c1[j]=str[i];
j++;
}
}
c1[j]='\0';
return c1;
}
main()
{
char string[20],ch;
gets(string);
scanf("%c",&ch);
printf("%s",delch(string,ch));
}
你的程序应该是这样的。
最大的问题在于理解程序在内存中的存储情况。具体可以搜一下c语言内存分布。简单来说,在函数delch()中定义的数组c1[20]是局部自动变量,在函数调用结束的时候就被自动释放了,所以返回c1就有问题了。
修改一,将要使用到的数组在使用之前定义好:
#include<stdio.h>
#include<string.h>
void delch(char str[],char c,char c1[])
{
int i=0,j=0;
for(i=0;str[i]!='\0';i++)
{
if(str[i]!=c)
{
c1[j]=str[i];
j++;
}
}
c1[j]='\0';
}
int main()
{
char string[20],ch;
char c1[20];
gets(string);
scanf("%c",&ch);
delch(string,ch,c1);
printf("%s",c1);
return 0;
}
修改二,使用malloc函数,使用malloc函数分配内存的变量是全局的,不过动态分配的内存要手动释放:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char* delch(char str[],char c)
{
int i=0,j=0;
char * c1 = (char*)malloc(sizeof(char)*20);//分配
for(i=0;str[i]!='\0';i++)
{
if(str[i]!=c)
{
c1[j]=str[i];
j++;
}
}
c1[j]='\0';
return c1;
}
int main()
{
char string[20],ch;
char *c1;
gets(string);
scanf("%c",&ch);
c1 = delch(string,ch);
printf("%s",c1);
free(c1);//释放
return 0;
}
第二个问题就是delch中的循环判断语句i!=‘\0’,应该改成str[i]!='\0'。
第三个问题是main函数应该有个返回值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式