|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
有一个字符串,内有若干个字符,令输入一个字符,要求程序将字符串中该字符删去。用外部函数实现
file1.c
#include <stdio.h>
void main ()
{
extern void enter_string(char star[]);
extern void delete_string(char star[],char ch);
extern void print_string(char str[]);
char c;
char str[80];
enter_string(str);
scanf("%c",&c);
delete_string(str,c);
print_string(str);
}
file2.c
#include <stdio.h>
void enter_string(char str[80])
{
gets(str);
}
file3.c
#include <stdio.h>
void delete_string(char str[],char ch)
{
int i,j;
for (i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
{
str[j++]=str[i];
}
str[j]='\0';
file4.c
#include <stdio.h>
void print_string (char str[])
{
printf("%s\n",str);
}
请高手回答一下
问题1:我想问为什么file1.c中
形参extern void enter_string(char star[]);
实参enter_string(str);
为什么是str[80]自己作为实参。就像
int max(int x,int y);
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b),就像这样a,b做实参,而不是x,y;
PS:不是问为什么是enter_string(str);
而不是enter_string(str[]);
问题2:为什么file2.c中
gets()函数改成scanf()函数会报错?
问题3:为什么file1.c中print_string(str);
它怎么知道我要的是str[i]还是str[j],又木有返回值? |
|