当前位置:新励学网 > 秒知问答 > C语言编程问题

C语言编程问题

发表时间:2024-07-11 23:32:26 来源:网友投稿

思路:

1、利用ftell函数获取文件的长度(字节数)。

2、利用fread函数读取文件所有内容。

3、通过遍历字符串,进行大小写判断及转换。

下面是演示代码:(命令符不想输入,连续两次回车)

#include

#include

#include

#defineFPHC:\\test.txt

longgetFileSize(charpath[]);//获取文件长度

char*readFFile(charpath[]);//获取文件内容

intprintfStrsByCommand(char*strs,char*com);//通过命令符,打印对应格式的字符串内容

//com为命令符,如下:(缺省传NULL,程序取默认值-p)

//-p按原样打印

//-u把输入转换成大写

//-l把输入转换成小写

intmain()

{

inti=0;

char*strs=NULL,com[3]={0};

strs=readFFile(FPH);

printf(请输入打印输出样式的命令符(-p\\-u\\-l):);

while(i<2)com[i++]=getchar();

printfStrsByCommand(strs,com);

free(strs);//这个释放对本程序无意义,可删除,因为程序到此就结束了。

strs=NULL;//但是如你后面还添加其它代码,strs不再使用需这样释放。

return0;

}

intprintfStrsByCommand(char*strs,char*com)

{

charc[]=-p,*p=NULL;

if(strs)

{

if(!com)com=c;

if(!strcmp(com,-u))

{

p=strs;

while(*p)

{

if(*p>='a'&&*p<='z')

*p^=32;

p++;

}

printf(转换成大写打印输出:\n);

}

if(!strcmp(com,-l))

{

p=strs;

while(*p)

{

if(*p>='A'&&*p<='Z')

*p^=32;

p++;

}

printf(转换成小写打印输出:\n);

}

if(strcmp(com,-p)&&strcmp(com,-u)&&strcmp(com,-l))

printf(无效命令符!按-p打印输出:\n);

}

printf(%s\n,strs);

return1;

}

longgetFileSize(charpath[])

{

longflen;

FILE*fp=NULL;

fp=fopen(path,rb);

if(!fp)return-1;

fseek(fp,0L,SEEK_END);

flen=ftell(fp);

fclose(fp);

returnflen;

}

char*readFFile(charpath[])

{

longsize=0;

char*strs=NULL;

FILE*fp=NULL;

fp=fopen(path,rb);

if(!fp){fclose(fp);returnNULL;}

fseek(fp,0L,SEEK_SET);

size=getFileSize(FPH);

strs=(char*)malloc(sizeof(char)*(size+1));

if(!strs){{fclose(fp);returnNULL;}}

if(fread(strs,1,size,fp)<size)

{

free(strs);

fclose(fp);

returnNULL;

}

strs[size]=0;

fclose(fp);

returnstrs;

}

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!