读书人

指针变量当参数。绕晕了。解决就给分

发布时间: 2012-03-07 09:13:51 作者: rapoo

指针变量当参数。绕晕了。在线等。解决就给分!
/*****************************************************************************************
**系统名: 无
**函数:MAIN主执行函数
**fpStr字符串处理函数
**file1length得到字符串1的长度
**file2length得到字符串2的长度
**
**文件名:temp
**
**用途:动态数组取值,
**并且冒泡排序。
**参数:无
**前提条件:无
**公共函数: 无
**返回值:无
**
**使用对象:.c
**修改记录:2007/09/27添加读取未知文件,
**并且得到长度的功能。
**
**日期 所属负责人PHTeamNOVSS指示书内容
**--------------------------------------------------------
**2007/09/19 HYYGXiaMaode PH1.0-01VSS-1 NONE NONE
*****************************************************************************************/

#include "stdio.h "
#include "stdlib.h "
#include "io.h "
#include "fcntl.h "


/**作用:主函数
***参数:无
***返回值:无
***备注:调用函数fpStr
**/
main(int fileName,char *fName[])
{

/**str1_Len:文件1的长度
***FILE *fp1:定义一个指向第一个文件的文件指针
**/
int str1_Len,str2_Len;
char tp1,tp2;
FILE *fp1,*fp2;
if(fileName!=3)
{
printf( "Give me food :)\n ");
exit(1);
}
/*判断文件是否能被正常打开,不能则输出内容*/
if((fp1=fopen(fName[1], "rb "))==NULL)
{
printf( "Cannot open file strike any key exit! ");
exit(1);
}
/*将指针定位到文件末尾*/
fseek(fp1,0L,2);
/*得到文件长度*/
str1_Len=ftell(fp1);
/*打印文件长度*/
printf( "File 's Length= %d\n ",str1_Len);
/*判断文件是否能被正常打开,不能则输出内容*/
if((fp2=fopen(fName[2], "rb "))==NULL)
{
printf( "Cannot open file strike any key exit! ");
exit(1);
}
/*将指针定位到文件末尾*/
fseek(fp2,0L,2);
/*得到文件长度*/
str2_Len=ftell(fp2);
/*打印文件长度*/
printf( "File1 's Length= %d\n ",str2_Len);
/*字符串的冒泡排序*/
fpStr(str1_Len,str2_Len,&fName);
}
/**作用:处理字符串,并且冒泡排序
***参数:无
***返回值:无
***备注:被主函数调用
**/
fpStr(int fl1_len, int fl2_len,char *xmd[])
{
/**fl1_len:第一个文件的长度
***fl2_len:第二个文件的长度
****fp1_op:第一个文件的文件指针
****fp2_op:第二个文件的文件指针
***i,j:冒泡排序的循环计数
***Length:字符串合并时需要的总长度
****str_fp1:第一个文件字符串的指针变量
****str_fp2:第二个文件字符串的指针变量
***temp:临时字符变量
**/


FILE *fp1_op,*fp2_op;
int i,j;
int Length=fl1_len+fl2_len;
char *str_fp1=(char*)malloc(Length*sizeof(char));
char *str_fp2=(char*)malloc(fl2_len*sizeof(char));
char temp;
/*判断文件1是否能被正常打开,不能则输出内容*/
if((fp1_op=fopen(xmd[1], "rb "))==NULL)
{
printf( "Cannot open file strike any key exit! ");
exit(1);
}
/*判断文件2是否能被正常打开,不能则输出内容*/
if((fp2_op=fopen(xmd[2], "rb "))==NULL)
{
printf( "Cannot open file strike any key exit! ");


exit(1);
}
/*从文件指针fp1_op指向的文件中,取得长度为文件长+1长度的字符串*/
fgets(str_fp1,fl1_len+1,fp1_op);
/*打印字符串*/
printf( "%s\n ",str_fp1);
/*从文件指针fp2_op指向的文件中,取得长度为文件长+1长度的字符串*/
fgets(str_fp2,fl2_len+1,fp2_op);
/*打印字符串*/
printf( "%s\n ",str_fp2);
/*合并字符串*/
strcat(str_fp1,str_fp2);
/*打印字符串*/
printf( "%s\n ",str_fp1);
/*进行Length-1次比较*/
for(j=0;j <Length;j++)
{
/*计算取得哪个字符变量进行比较*/
for(i=0;i <Length-j;i++)
{
/*比较相邻的两个字符,大的放到后面*/
if(*(str_fp1+i)> *(str_fp1+i+1))
{
temp=*(str_fp1+i);
*(str_fp1+i)=*(str_fp1+i+1);
*(str_fp1+i+1)=temp;
}
}
}
/*循环打印字符,i取值1是为了去除末尾的 '\0 '*/
printf( "The number:\n ");
for(i=1;i <Length+2;i++)
{
printf( "%c ",*(str_fp1+i));
}
}


main()函数中的*fName[]
在main函数中的 函数调用处《fpStr(str1_Len,str2_Len,&fName);》怎么写?
然后到了 函数
fpStr(int fl1_len, int fl2_len,char *xmd[])里和此函数内又怎么写?


[解决办法]
fpStr(str1_Len,str2_Len,&fName);

---->

fpStr(str1_Len,str2_Len, fName);
[解决办法]
我用VC6编译.我说一下我这里出现的问题.

1.楼主应该在头文件里加上string.h文件.不然strcat函数找不到.
#include <string.h>

2.fpStr(int fl1_len, int fl2_len,char *xmd[]) 函数应该有返回值.要不将其申明为void型.

3.它的调用方式如楼上星宇说的那样.应该是这样去调用.
fpStr(str1_Len,str2_Len, fName);

4.主函数的参数不能被调用那要它干嘛...

在我这里解决了以上问题后可以正常运行...其它的问题就不太清楚了...
[解决办法]
main()函数中的*fName[]
在main函数中的 函数调用处《fpStr(str1_Len,str2_Len,&fName);》怎么写?
然后到了 函数
fpStr(int fl1_len, int fl2_len,char *xmd[])里和此函数内又怎么写?
--------------------

fpStr(str1_Len, str2_Len, fName)

你的fpStr函数使用应该可

读书人网 >C语言

热点推荐