| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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],又木有返回值? |   
 
 
 
 |