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 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?