C语言 文件测试

/**
 * fclose()
 *原型:int fclose(FILE*f);
返回值:对于输出流,fclose函数会在文件关闭前刷新缓冲区,
       如果它执行成功,fclose返回零值
注意:使用fclose函数就可以把缓冲区内最后剩余的数据输出到内核缓冲区,并释放文件指针和有关的缓冲区
 两次fopen之间  必须先关闭?  这一点与PHP类似

 */
#include <stdio.h>

//P295 李春宝C语言
int main9_2_20(){
    FILE *fp;
    int i=20,j=30,k,n;
    fp = fopen("d1.dat","w");//w 指定文件不存在--》建立新文件  指定文件存在--》原有内容丢失
    fprintf(fp,"%d\n",i);
    fprintf(fp,"%d\n",j);
    fclose(fp);//自己:放在这里? 移动到最后一行   放到最后输出 0 0  rewind(fp); 也不行???

    fopen("d1.dat","r");
    fscanf(fp,"%d%d",&k,&n);
    printf("%d %d\n",k,n);//20 30
    fclose(fp);
    return 0;
}

//AC 内涵换行符也行 【重要】P297  将一个名为old.dat的【文件复制】到一个名为new.dat的新文件中。
int main002(){
    int c;
    FILE *fp1,*fp2;
    fp1 = fopen("old.txt","r");
    fp2 = fopen("new.dat","w"); //不能写大写的W
    c = getc(fp1);
    while(c!=EOF){
        putc(c,fp2);
        c = getc(fp1);
    }
    fclose(fp1);
    fclose(fp2);

    return 0;
}

//-->两个文件名在命令行中给出
//在Clion的IDE中指定命令行参数  todo  暂略
int main0021(int argc,char *argv[]){

    if(argc<3){
        printf("Parameters missing!\n");
        return 0;
    }


    int c;
    FILE *fp1,*fp2;

    if((fp1=fopen(argv[1],"r"))==NULL || (fp2=fopen(argv[2],"w"))==NULL){
        printf("cannot open file!\n");
        return 0;
    }


    while(!feof(fp1)){ //&nbs***bsp; feof(fp1)==0
        fputc(fgetc(fp1),fp2); // 上题 getc  putc  暂略 f---function
    }


    fclose(fp1);
    fclose(fp2);

    return 0;
}

//P298 统计文本文件中的字符行数
int main003(){
    FILE *fp;
    int num = 0;
    char buff[80];
    if((fp=fopen("old.txt","r"))==NULL){
        printf("不能打开文件\n");
        return 0;
    }
    while(!feof(fp)){
        fgets(buff,80,fp);
        num++;
    }
    printf("num=%d\n",num);//自己:当每行字符太大时 结果不对  todo 如何调整
    fclose(fp);

    return 0;
}

//AC P300 从磁盘中输入一个字符串,把该字符串中的小写字母转换为大写字母,输出文件到test.dat中,然后从该文件读出字符串并显示出来。
void main9_2_32(){
    FILE *fp;
    char str[100];
    int i = 0;
    if((fp=fopen("test.dat","w"))==NULL){
        printf("不能打开文件\n");
        return;
    }
    printf("input a string:\n");
    gets(str);
    while(str[i]){
        if(str[i]>='a' && str[i]<= 'z'){
            str[i] = str[i] - 'a' + 'A';//str[i]-32  &nbs***bsp;  str[i] - ('a' - 'A')
        }
        fputc(str[i],fp);
        i++;
    }
    fclose(fp);
    fp = fopen("test.dat","r");
    fgets(str,100,fp);
    printf("%s\n",str);
    fclose(fp);
}


全部评论

相关推荐

2025-12-02 22:43
门头沟学院 Java
我要娶个什么名:问就是呗,说说你的优化部分
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务