69,378
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAXSIZE 100
int main(void)
{
char buffer[MAXSIZE];
FILE *fin,*fout;
if((fin = fopen("c:\\file.txt","r")) == NULL){
perror("open fin error\n");
exit(1);
}
if((fout = fopen("c:\\out.txt","w+")) == NULL){
perror("creat outfile error!\n");
exit(1);
}
fgets(buffer,MAXSIZE,fin);
// memset(buffer,0,MAXSIZE);
while(fgets(buffer,MAXSIZE,fin) != NULL){
fputs(buffer,fout);
// memset(buffer,0,MAXSIZE);
}
fclose(fin);
fclose(fout);
remove("c:\\file.txt");
rename("c:\\out.txt","c:\\file.txt");
}
//输出PROG中有但LIST中没有的文本行,即集合PROG-LIST
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <search.h>
#define MAXLINES 1000000
#define MAXCHARS 256
char buf[MAXLINES][MAXCHARS];
char P[256]="PROG";//程序Program需要的文件列表
char L[256]="LIST";//dir /b /s生成的实际文件列表List
FILE *fp,*fl;
int c,n,L1;
int ignore_case=0;
char ln[MAXCHARS];
int icompare(const void *arg1,const void *arg2) {
return stricmp((char *)arg1,(char *)arg2);
}
int compare(const void *arg1,const void *arg2) {
return strcmp((char *)arg1,(char *)arg2);
}
void main(int argc,char **argv) {
if (argc>1) strcpy(P,argv[1]);//命令行参数1覆盖PROG
if (argc>2) strcpy(L,argv[2]);//命令行参数2覆盖LIST
if (argc>3) ignore_case=1;//若存在命令行参数3,忽略大小写
if ((fl=fopen(L,"rt"))==NULL) {
printf("Can not open %s\n",L);
return;
}
if ((fp=fopen(P,"rt"))==NULL) {
fclose(fl);
printf("Can not open %s\n",P);
return;
}
n=0;
while (1) {
if (fgets(ln,MAXCHARS,fl)==NULL) break;//
L1=strlen(ln)-1;
if ('\n'!=ln[L1]) {//超长行忽略后面内容
while (1) {
c=fgetc(fl);
if ('\n'==c || EOF==c) break;//
}
}
while (1) {//去掉行尾的'\n'和空格
if ('\n'==ln[L1] || ' '==ln[L1]) {
ln[L1]=0;
L1--;
if (L1<0) break;//
} else break;//
}
if (L1>=0) {
strcpy(buf[n],ln);
n++;
if (n>=MAXLINES) {
fclose(fl);
fclose(fp);
printf("%s up to %d lines",L,MAXLINES);
return;
}
}
}
fclose(fl);
if (ignore_case) qsort(buf,n,MAXCHARS,icompare);
else qsort(buf,n,MAXCHARS,compare);
while (1) {
if (fgets(ln,MAXCHARS,fp)==NULL) break;//
L1=strlen(ln)-1;
if ('\n'!=ln[L1]) {//超长行忽略后面内容
while (1) {
c=fgetc(fp);
if ('\n'==c || EOF==c) break;//
}
}
while (1) {//去掉行尾的'\n'和空格
if ('\n'==ln[L1] || ' '==ln[L1]) {
ln[L1]=0;
L1--;
if (L1<0) break;//
} else break;//
}
if (L1>=0) {
if (ignore_case) {
if (NULL==bsearch(ln,buf,n,MAXCHARS,icompare)) printf("%s\n",ln);
} else {
if (NULL==bsearch(ln,buf,n,MAXCHARS,compare)) printf("%s\n",ln);
}
}
}
fclose(fp);
}
//输出PROG中有但LIST中没有的文本行,即集合PROG-LIST
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <search.h>
#define MAXLINES 1000000
#define MAXCHARS 256
char buf[MAXLINES][MAXCHARS];
char P[256]="PROG";//程序Program需要的文件列表
char L[256]="LIST";//dir /b /s生成的实际文件列表List
FILE *fp,*fl;
int c,n,L1;
int ignore_case=0;
char ln[MAXCHARS];
int icompare(const void *arg1,const void *arg2) {
return stricmp((char *)arg1,(char *)arg2);
}
int compare(const void *arg1,const void *arg2) {
return strcmp((char *)arg1,(char *)arg2);
}
void main(int argc,char **argv) {
if (argc>1) strcpy(P,argv[1]);//命令行参数1覆盖PROG
if (argc>2) strcpy(L,argv[2]);//命令行参数2覆盖LIST
if (argc>3) ignore_case=1;//若存在命令行参数3,忽略大小写
if ((fl=fopen(L,"rt"))==NULL) {
printf("Can not open %s\n",L);
return;
}
if ((fp=fopen(P,"rt"))==NULL) {
fclose(fl);
printf("Can not open %s\n",P);
return;
}
n=0;
while (1) {
if (fgets(ln,MAXCHARS,fl)==NULL) break;//
L1=strlen(ln)-1;
if ('\n'!=ln[L1]) {//超长行忽略后面内容
while (1) {
c=fgetc(fl);
if ('\n'==c || EOF==c) break;//
}
}
while (1) {//去掉行尾的空格
if (' '==ln[L1]) {
ln[L1]=0;
if (0==L1) break;//
L1--;
} else break;//
}
if (L1>0) {
strcpy(buf[n],ln);
n++;
if (n>=MAXLINES) {
fclose(fl);
fclose(fp);
printf("%s up to %d lines",L,MAXLINES);
return;
}
}
}
fclose(fl);
if (ignore_case) qsort(buf,n,MAXCHARS,icompare);
else qsort(buf,n,MAXCHARS,compare);
while (1) {
if (fgets(ln,MAXCHARS,fp)==NULL) break;//
L1=strlen(ln)-1;
if ('\n'!=ln[L1]) {//超长行忽略后面内容
while (1) {
c=fgetc(fl);
if ('\n'==c || EOF==c) break;//
}
}
while (1) {//去掉行尾的空格
if (' '==ln[L1]) {
ln[L1]=0;
if (0==L1) break;//
L1--;
} else break;//
}
if (L1>0) {
if (ignore_case) {
if (NULL==bsearch(ln,buf,n,MAXCHARS,icompare)) printf("%s\n",ln);
} else {
if (NULL==bsearch(ln,buf,n,MAXCHARS,compare)) printf("%s\n",ln);
}
}
}
fclose(fp);
}