删除指定下标的字符c语言,C语言 删除字符串中指定下标

字符串操作技巧
本文探讨了如何通过编写函数来实现从一个字符串中删除指定下标的字符的功能,并提供了具体的代码示例及解析。

要求编写一个函数void fun(char a[],char b[],int n),功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。

例如,输入字符串World,然后输入3,则调用函数后的结果为Word。

题目中,部分源程序已给出,请勿改动main函数,只需把fun函数以内的内容写出即可。

试题程序是:

#include

#include

#define LEN 20

void fun(char a[],char b[],int n)

{

/************** 以下这部分是题目答案 ********************

int i,j=0;

for(i=0;i

if(i!=n)

{

b[j]=a[j];

j++;

}

b[j]='\0';

**************************************************************/

/************** 这个是我回答的内容 ***************************

int i,j=0;

for(i=0;i

b[i]=a[j];

j=j+1;

for(i=n;i

b[i]=a[j];

b[i]='\0';

***************************************************************/

}

main()

{

char str1[LEN],str2[LEN];

int n;

FILE *out;

printf("Enter the string:\n");

gets(str1);

printf("Enter the position of the string deleted:\n");

scanf("%d",&n);

fun(str1,str2,n);

printf("The new string is:%s\n",str2);

fun("Hellow World!",str2,9);

out=fopen("out.dat","w");

fprintf(out,"%s",str2);

fclose(out);

}

它那个答案为什么要那样写呢?if(i!=n)的时候做那个语句块,等到i==1的时候,就做b[j]='\0';,然后再一直循环直到结尾,那他不就等于是 把非指定下标的字符依次拷贝到字符串b中,但是那个指定下标内却存放了字符'\0'了?

还是我哪里理解错了?

可是它这个答案,我运行下来的结果是错误的啊……,我自己写的那个运行结果也是错的。

那到底应该怎么写呢?它这个答案到底是不是正确的呢?如果是正确的话,能具体解释一下吗?

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值