當前位置:編程學習大全網 - 編程語言 - C語言編程問題?

C語言編程問題?

思路:

1、利用ftell函數獲取文件的長度(字節數)。

2、利用fread函數讀取文件所有內容。

3、通過遍歷字符串,進行大小寫判斷及轉換。

下面是演示代碼:(命令符不想輸入,連續兩次回車)

#include <stdio.h>

#include <malloc.h>

#include <string.h>

#define FPH "C:\\test.txt"

long getFileSize(char path[]);//獲取文件長度

char *readFFile(char path[]);//獲取文件內容

int printfStrsByCommand(char *strs,char *com);//通過命令符,打印對應格式的字符串內容

//com為命令符,如下:(缺省傳NULL,程序取默認值-p)

//-p 按原樣打印

//-u 把輸入轉換成大寫

//-l 把輸入轉換成小寫

int main()

{

int i=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不再使用需這樣釋放。

return 0;

}

int printfStrsByCommand(char *strs,char *com)

{

char c[]="-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);

return 1;

}

long getFileSize(char path[])

{

long flen;

FILE *fp=NULL;

fp=fopen(path,"rb");

if(!fp) return -1;

fseek(fp,0L,SEEK_END);

flen=ftell(fp);

fclose(fp);

return flen;

}

char *readFFile(char path[])

{

long size=0;

char *strs=NULL;

FILE *fp=NULL;

fp=fopen(path,"rb");

if(!fp){fclose(fp);return NULL;}

fseek(fp,0L,SEEK_SET);

size=getFileSize(FPH);

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

if(!strs){{fclose(fp);return NULL;}}

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

{

free(strs);

fclose(fp);

return NULL;

}

strs[size]=0;

fclose(fp);

return strs;

}

  • 上一篇:直升機的飛行原理和哪種玩具
  • 下一篇:關於數據結構的問題,100分,急用速度!!
  • copyright 2024編程學習大全網