C Primer Plus(第六版)13.11 编程练习 第13题

/*
13.11-13.txt
0 0 9 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 2 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 9 0 0 0 0 0 0 0 5 8 9 9 8 5 5 2 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 5 8 1 9 8 5 4 5 2 0 0 0 0 0 0 0 0 0
0 0 0 0 9 0 0 0 0 0 0 0 5 8 9 9 8 5 0 4 5 2 0 0 0 0 0 0 0 0
0 0 9 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 0 0 4 5 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 5 8 9 1 8 5 0 0 0 4 5 2 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 0 0 0 0 4 5 2 0 0 0 0 0
5 5 5 5 5 5 5 5 5 5 5 5 5 8 9 9 8 5 5 5 5 5 5 5 5 5 5 5 5 5
8 8 8 8 8 8 8 8 8 8 8 8 5 8 9 9 8 5 8 8 8 8 8 8 8 8 8 8 8 8
9 9 9 9 0 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 3 9 9 9 9 9 9 9
8 8 8 8 8 8 8 8 8 8 8 8 5 8 9 9 8 5 8 8 8 8 8 8 8 8 8 8 8 8
5 5 5 5 5 5 5 5 5 5 5 5 5 8 9 9 8 5 5 5 5 5 5 5 5 5 5 5 5 5
0 0 0 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 0 0 0 0 6 6 0 0 0 0 0 0
0 0 0 0 2 2 0 0 0 0 0 0 5 8 9 9 8 5 0 0 5 6 0 0 6 5 0 0 0 0
0 0 0 0 3 3 0 0 0 0 0 0 5 8 9 9 8 5 0 5 6 1 1 1 1 6 5 0 0 0
0 0 0 0 4 4 0 0 0 0 0 0 5 8 9 9 8 5 0 0 5 6 0 0 6 5 0 0 0 0
0 0 0 0 5 5 0 0 0 0 0 0 5 8 9 9 8 5 0 0 0 0 6 6 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 5 8 9 9 8 5 0 0 0 0 0 0 0 0 0 0 0 0
*/

#include
#include

#define MAX 41

char convert(int n);
int get_row(FILE *fp);
int get_col(FILE *fp);

int main(void)
{
    char file_name[MAX];
    char ch;
    FILE *fp;
    int i,j;
    int row,col;
    scanf("%s",file_name);
    if ((fp = fopen(file_name, "r")) == NULL)
    {
        fprintf(stdout,"Can't open file.\n");
        exit(EXIT_FAILURE);
    }
    row = get_row(fp);
    col = get_col(fp);
    
    printf("row=%d,col=%d\n",row,col);
    int num[row][col];
    char str[row][col+1];
    
    i=0;
    j=0;
    while((ch = getc(fp))!=EOF)
    {
        if(ch != '\n'&&ch != ' ')
        {
            num[i][j] = ch - '0';
            j++;
        }
        else if(ch=='\n')
        {
            i++;
            j=0;
        }
    }
    fclose(fp);
    for(i=0;i     {    
        str[i][col] = '\0';
        for(j=0;j             str[i][j] = convert(num[i][j]);        
    }
    for(i=0;i         printf("%s\n",str[i]);        

    return 0;
}    

char convert(int n) 
{
    switch(n)
    {
        case 0:return(' ');
        case 1:return('.');
        case 2:return('\'');
        case 3:return(':');
        case 4:return('~');
        case 5:return('*');
        case 6:return('=');
        case 7:return('+');
        case 8:return('%');
        case 9:return('#');
        default:return(' ');
    }
}
int get_row(FILE *fp)
{
    int ch,count=0;
    while((ch = getc(fp))!=EOF)
    {
        if(ch=='\n')
            count++;
    }
    fseek( fp, 0, SEEK_SET );
    return count;
}

int get_col(FILE *fp)
{
    int ch,count=0;
    while((ch = getc(fp))!=EOF)
    {
        if(ch != ' '&&ch != '\n')
            count++;
        else if(ch =='\n')
            break;
    }
    fseek( fp, 0, SEEK_SET );
    return count;
}

你可能感兴趣的:(C,Primer,Plus(第六版),c语言)