美文网首页散文想法简友广场
C语言第16周作业(文件打开、关闭,读写)

C语言第16周作业(文件打开、关闭,读写)

作者: Cache_wood | 来源:发表于2020-12-31 12:51 被阅读0次

    1.

    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #define FILE_NAME "name.txt"
    
    int main(){
        FILE *fp=fopen(FILE_NAME,"r");
        if(NULL==fp){
            printf("Failed to read the file %s \n",FILE_NAME);
            exit(-1);
        }
        int ch=fgetc(fp);
        int ch1;
        printf("Name:");
        while(ch!=EOF){
            ch1 = ch;
            if(ch1=='\n'){
                printf("\nName:");
            }
            ch = fgetc(fp);
            //printf("%d\n",ch1);
            if(ch1==9&&isdigit(ch)) printf("\nAddress:");
            if(ch1!='\n') putchar(ch1);
            if(ch1=='.'&&ch==9){
                printf("\nCity,State:");
            }
        }
        fclose(fp);
        return 0;
    }
    

    2.

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <ctype.h>
    #define FILE_NAME "wage.txt"
    
    int main(){
        FILE *fp = fopen(FILE_NAME,"r");
        if(fp == NULL){
            printf("Can't open %s\n",FILE_NAME);
            exit(EXIT_FAILURE);
        }
        printf("Name\t   Social Security Number   Total revernue\n");
        int ch1,ch=fgetc(fp);
        while(ch!=EOF){
            ch1 = ch;
            ch = fgetc(fp);
            if(isdigit(ch1)&&ch=='.'){
                int sum = 0;
                while (ch!='\n'){
                    if(isdigit(ch)){
                        sum = sum*10 +(ch-48);
                        //printf("sum = %d\n",sum);
                    }
                    ch = fgetc(fp);
                }
                double para = ch1-48+(sum/100)/100.0;
                printf("\t%.1lf",para*(sum%100));
            }
            putchar(ch1);
        }
        fclose(fp);
    
        return 0;
    }
    

    3.

    #include <stdio.h>
    #include <stdlib.h>
    #define FILE_NAME "text.dat"
    
    int main(){
        FILE *fp = fopen(FILE_NAME,"r");
        if(fp == NULL){
            printf("Can't open %s\n",FILE_NAME);
            exit(EXIT_FAILURE);
        }
        char ch = fgetc(fp);
        int cnt = 0;
        while(ch!=EOF){
            if(cnt%2==0) putchar(ch);
            ch = fgetc(fp);
            cnt++;
        }
        fclose(fp);
    
        return 0;
    }
    
    //text.dat
    hello, everyday! Today I will give a presentation about covid-19.
    

    4.

    //输入之前数据
    30 60 40 80 90 120 150 130 160 170
    
    #include <stdio.h>
    #include <stdlib.h>
    #define FILE_NAME "Pollen.dat"
    
    int main(){
        int num[10];
        int number;
        printf("enter a new number:");
        scanf("%d",&number);
        FILE *fp = fopen(FILE_NAME,"r");
        if(fp == NULL){
            printf("Can't open %s\n",FILE_NAME);
            exit(EXIT_FAILURE);
        }
        int i = 0,total = 0;
        while(!feof(fp)){
            fscanf(fp,"%d",&num[i]);
            //printf("%d\n",total);
            total +=num[i];
            i++;
        }
        //printf("%d\n",total);
        fclose(fp);
    
        for(i=0;i<9;i++){
            num[i] = num[i+1];
        }
        num[9] = number;
        for(i=0;i<10;i++){
            printf("%d\n",num[i]);
        }
        
        fp = fopen(FILE_NAME,"w");
        if(fp == NULL){
            printf("Can't open %s\n",FILE_NAME);
            exit(EXIT_FAILURE);
        }
        printf("The average for the past ten days is %d\n",total/10);
        total = total -num[0]+num[9];
        printf("The average for the last ten days is %d\n",total/10);
        for(i=0;i<10;i++){
            fprintf(fp,"%d ",num[i]);
        }
        fclose(fp);
    
        return 0;
    }
    
    //输入190之后的数据
    60 40 80 90 120 150 130 160 170 190 
    

    5.

    #include<stdio.h>
    #include<stdlib.h>
    
    int main(int argc, char* argv[])
    {
        if(argc!=2){
            printf("Usage: ./fs filename\n");
            exit(-1);
        }
        FILE *rf=fopen(argv[1],"r");
        if(NULL==rf){
            printf("Failed to read the file %s \n",argv[1]);
            exit(-1);
        }
        int ch;
        int i=0;
        long offset, last;
        fseek(rf,0L,SEEK_END);
        last=ftell(rf);
        for(offset=0;offset<=last;offset++){
            fseek(rf,-offset,SEEK_END);
            ch=fgetc(rf);
            switch(ch){
                case '\n':break;
                case EOF: break;
                default:printf("%c",ch);break;
            }
        }
        printf("\n");
        fclose(rf);
        return 0;
    }
    

    6.

    3.
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc,char *argv[]){
        char str[100];
        int num;
        printf("the number of files is:");
        scanf("%d",&num);
        FILE *fp;
        if(argc!=num+1){
            printf("usage:canopen filename\n");
            exit(EXIT_FAILURE);
        }
        for(int i=1;i<num+1;i++){
            if((fp = fopen(argv[i],"r"))==NULL){
                printf("%s can't be opened\n",argv[1]);
                exit(EXIT_FAILURE);
            }
            int ch=fgetc(fp);
            while(ch!=EOF){
                putchar(ch);
                ch = fgetc(fp);
            }
            fclose(fp);
        }
    
        return 0;
    }
    

    命令行下输入3个文件的名字,依次打开并打印之后关闭。



    如果给出的文件数目与所要的文件数目不对应,程序会停止。

    4.
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    
    int main(int argc,char *argv[]){
        FILE *fp = fopen(argv[1],"r");
        if(fp == NULL){
            printf("Can't open %s\n",argv[1]);
            exit(EXIT_FAILURE);
        }
        int cnt = 0,cnt_line=0,cnt_word=0;
        char ch=fgetc(fp);
        while(ch!=EOF){
            if(isalpha(ch)){
                cnt++;
            }
            if(ch=='\n'){
                cnt_line++;
            }
            if(ch==' '){
                cnt_word++;
            }
            putchar(ch);
            ch = fgetc(fp);
        }
        fclose(fp);
        printf("\n\nthe number of characters are %d\n",cnt);
        printf("the number of lines are %d\n",cnt_line+1);
        printf("the number of words are %d\n",cnt_word+1);
    
        return 0;
    }
    

    7.

    //txt文件 "telephone.txt"
    404.817.6900
    (215) 686-1776
    312-746-6000
    877 275 5273
    6173434200
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #define FILE_NAME "telephone.txt"
    
    int main(){
        FILE *fp = fopen(FILE_NAME,"r");
        if(fp == NULL){
            printf("Can't open %s\n",FILE_NAME);
            exit(EXIT_FAILURE);
        }
        int cnt_line = 0;
       char ch=fgetc(fp);
        while(ch!=EOF){
            if(ch=='\n'){
                cnt_line++;
            }
            //putchar(ch);
            ch = fgetc(fp);
        }
        //fclose(fp);
        //fp = fopen(FILE_NAME,"r");
        rewind(fp);
    
        for(int k=0;k<cnt_line+1;k++){
            char str[100];
            int i = 0,j = 0;
            fgets(str,sizeof(str),fp);
            printf("(");
            while(i<10){
                if(isdigit(str[j])){
                    printf("%c",str[j]);
                    i++;
                    if(i==3) printf(") ");
                    if(i==6) printf("-");
                }
                j++;
            }
            printf("\n");
        }
        //printf("%s",str);
        fclose(fp);
        return 0;
    }
    

    8.

    #include<stdio.h>
    #include<stdlib.h>
    #include<ctype.h>
    
    #define L 10
    
    int main(int argc, char*argv[])
    {
        if(argc!=2)
        {
            printf("Usage: ./br filename\n");
            exit(EXIT_FAILURE);
        }
        FILE *rf=fopen(argv[1],"rb");//rb是必需的
        if(NULL==rf)
        {
            printf("Failed to open the file %s.\n",argv[1]);
            exit(EXIT_FAILURE);
        }
        unsigned char buffer[L];//unsigned是必需的
        int j=0;
        printf("offset");
        printf("\t");
        printf("            Bytes            ");
        printf("\t");
        printf("Characters\n");
        printf("------");
        printf("\t");
        printf("-----------------------------");
        printf("\t");
        printf("----------\n");
        while(1)
        {
            int n=fread(buffer,sizeof(unsigned char),L,rf);
            //printf("n=%d\n",n);
            if(n<=L)
            {
                printf("%6d\t",j);
                j+=L;
                int i;
                for(i=0;i<n;i++)
                {
                    printf("%02X",buffer[i]);
                    if(i<n-1)
                        printf(" ");
                }
                if(n<L)
                {
                    for(i=n;i<L-1;i++)
                        printf("   ");
                    printf("  ");
                }
                printf("\t");
                for(i=0;i<n;i++)
                {
                    if(isprint(buffer[i]))
                        printf("%c",buffer[i]);
                    else
                        printf(".");
                }
                printf("\n");
                if(n<L)
                {
                    break;
                }
    
            }
        }
        fclose(rf);
        return 0;
    }
    

    相关文章

      网友评论

        本文标题:C语言第16周作业(文件打开、关闭,读写)

        本文链接:https://www.haomeiwen.com/subject/wfmvnktx.html