m0_61828817 2021-11-17 10:18 采纳率: 70%
浏览 99
已结题

c语言问题。这个实在不会写

Write a program that reads from a text file named "messages.txt" line by line (until end-of-file,EOF) and echoes the messages to the display.
Have the program recognize and implement the following command-line arguments:

img

多谢,实在不知道怎么写

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-11-17 10:47
    关注

    英文看不大明白,这个命令行参数是cmd窗口中输入的命令行参数么?

    #include <stdio.h>
    int main(int args,char *argv[])
    {
        FILE *fp = NULL;
        int i=0,n=0,m=0;
        char buf[1000];
        char word[100][20] = {0};
    
        if(args < 2)
        {
            printf("参数不足");
            return 0;
        }
        fp = fopen(argv[1],"r");
        if(fp == NULL)
        {
            printf("文件打开失败.");
            return 0;
        }
        while(fgets(buf,1000,fp) != NULL)
        {
            for(i=0;i<100;i++)
                memset(word[i],0,20);
            i=0;
            n=0;
            m=0;
            if(args == 2)
                printf("%s\n",buf);
            else
            {
                if(argv[2][1] == 'u')
                {
                    while(buf[i] != '\0')
                    {
                          if(buf[i]>='a' && buf[i] <='z')
                              printf("%c",buf[i] - 32);
                          else
                              printf("%c",buf[i]);
                          i++;
                    }
                }
                else if(argv[2][1] == 'l')
                {
                    while(buf[i] != '\0')
                    {
                          if(buf[i]>='A' && buf[i] <='Z')
                              printf("%c",buf[i] + 32);
                          else
                              printf("%c",buf[i]);
                          i++;
                    }
                }
                else if(argv[2][1] == 'r')
                {
                     while(buf[i] != '\0')
                    {
                        if(buf[i] == '\n')
                        {
                            i++;
                            continue;
                        }
                          if(buf[i] == ' ')
                          {
                                if(m!=0)
                                    n++;
                                m=0;
                          }
                          else
                              word[n][m++] = buf[i];
                          i++;
                    }
                     if(m!=0)
                         n++;
                    for(i=n-1;i>=0;i--)
                        printf("%s ",word[i]);
                }
            }
            printf("\n");
        }
        fclose(fp);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月25日
  • 已采纳回答 11月17日
  • 创建了问题 11月17日

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line