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));}
展开
3个回答
展开全部
#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));
}
展开全部
推荐选楼上的。改的很好,注释也很清楚。
只是,楼上的把函数返回值类型也改了,没有加以注释。这个加上就好了。
只是,楼上的把函数返回值类型也改了,没有加以注释。这个加上就好了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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函数应该有个返回值。
#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函数应该有个返回值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询