删除指定下标的字符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'了?
还是我哪里理解错了?
可是它这个答案,我运行下来的结果是错误的啊……,我自己写的那个运行结果也是错的。
那到底应该怎么写呢?它这个答案到底是不是正确的呢?如果是正确的话,能具体解释一下吗?