C语言问题朋友们进来看看吧!!

来源:百度知道 编辑:UC知道 时间:2024/05/06 11:35:54
函数的功能是删去a中指定的字符,把新字符放在b中,
n是指字字符的下标
现在有两个函数,fuu1在VC++中编译后没有错误,但是运行后不能运行
void fun1 (char a[ ], char b [ ], int n)
{
int i=0,j=0;
while(a[i]!='\0')
{
b[j++]=a[i];
if(i==n) j--; /*如果i与指定的字符的下标相等则j自减一个*/
i++;

}
b[j]='\0'; /*在字符串最后加上结束标记*/
}
这个可以!
int i,k=0;
for(i=0;a[i]!='\0';i++)
if(i!=n) /*将不是指定下标的字符存入数组b中*/
b[k++]=a[i];
b[k]='\0'; /*在字符串最后加上结束标记*/
想问一下为什么上面一个不可以????

可以啊,我用Microsoft Visual Studio 2005运行过都可以
#include "stdio.h"
void fun1(char a[],char b[],int n)
{
int i=0,j=0;
while(a[i]!='\0')
{
b[j++]=a[i];
if(i==n) j--;
i++;
}
b[j]='\0';
}
main()
{
char a[10]="china",b[10];
fun1(a,b,2);
puts(b);
system("pause");
}

o

我明确的告诉你这个函数是完全正确的。
没有可能不正确。
初看你写的函数, 我努力找错误,但都失败了;
所以我认定你的函数没有错误。 在电脑上编译运行的结果也证明了函数是绝对正确的。
你说的不能运行?? 不可能吧,也许你调用函数时候参数写错了。

下面的 这个程序 ,是我吧main()函数加上去了。你运行一下吧。绝对正确。
#include<stdio.h>

void fun1 (char a[], char b [], int n)
{
int i=0,j=0;
while(a[i]!='\0')
{
b[j++]=a[i];
if(i==n) j--; /*如果i与指定的字符的下标相等则j自减一个*/
i++;
}
b[j]='\0'; /*在字符串最后加上结束标记*/
}

void fun2(char a[], char b[], int n)
{
int i,k=0;
for(i=0;a[i]!=