首页 > 试题广场 >

修改程序清单13.1中的程序,使之不采用命令行参数,而是请求

[问答题]
修改下面的程序,使之不采用命令行参数,而是请求用户输入文件名并读入用户的响应。
/* count.c -- 使用标准I/O */
#include <stdio.h>
#include <stdlib.h> // ANSI C的exit()原型
int main(int argc, char *argv[])
{
    int ch;     // 读取是存储每个字符的位置
    FILE *fp;   // 文件指针
    long count = 0;
    if(argc != 2)
    {
       printf("Usage: %s filename\n", argv[0]);
       exit(1);
    }
    if((fp = fopen (argv[1], "r")) == NULL)
    {
        printf("Can't open %s\n", argv[1]);
        exit(1);
    }
    while((ch = getc (fp)) != EOF)
    {
        putc(ch, stdout);  // 相当于putchar(ch);
        count++;
    }
    fclose(fp);
    printf("File %s has %1d characters\n", argv[1],count);
    return 0;
}
推荐
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
 int ch;
 FILE *fp;
 long count = 0;
 char name[41];
 printf("input the file's name:");
 scanf("%s",name);
 if ( (fp = fopen(name,"r")) == NULL)
 {
 printf ("Can't open %s\n", name);
 exit(1);
 }
 while ((ch = getc(fp)) != EOF)
 {
 putc(ch,stdout);
 count++;
 }
 fclose(fp);
 printf ("\nFile %s has %ld characters\n",name,count);
 return 0;
}

发表于 2018-05-05 22:00:30 回复(0)