ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

通过命令行参数,打印文件中有特定字符的行--原题C prime plus,第13章-复习题5

2022-01-29 14:02:10  阅读:129  来源: 互联网

标签:prime 字符 13 ch 打印文件 int char 字符串 include


除去程序名本身,要求输入两个参数,分别为需要判定的字符,以及文件名。

思路:

1. 文件内容逐一判定,确定是否有该字符;

2.将文件字符串赋给一个字符串数组;

3.通过strrchr()函数,或类似函数,通过返回值判定字符串是否有该字符。 ( 第一条可以与此条合并执行,以下代码按3条思路进行)

 

存在的疑惑:exit()中的参数1或者0?

如果文件中,不存在此字符,那么参数是1(正常关闭)还是应该为0(异常关闭)呢?

如果有哪位大佬看到,能否帮助解答下我的疑惑。谢谢。

 

下面为程序,如有问题,请帮助指出

# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <stdbool.h>

# define SIZE 50
# define LIM 100

int main(int argc, char* argv[])
{
    FILE* fp;
    bool infile = false;
    char ch;
    char aim = argv[1][0];   //需要判定的目标字符,注意命令行参数是以字符串形式存储
    char arr[SIZE][LIM];     
    
    if(argc<3)              //参数不足
    {
        printf("The argument must over %d",argc-1);
    }
    if ((fp = fopen(argv[2], "r")) == NULL)   //打开文件失败
    {
        fprintf(stderr, "Can't open %s -filename", argv[2]);
        exit(EXIT_FAILURE);
    }
//全文件判定是否存在此字符 while ((ch = getc(fp)) != EOF ) { if (ch == aim) { infile = true; break; } else continue; } if (infile == false) { printf("No character %c in the file",aim); //如果不存在,直接关闭程序 exit(1); //1 还是 0 ??? } else rewind(fp); //回到文件指针初始位置
// 将文件中字符串赋给二维字符串数组 int i = 0; int j = 0; while ((ch = getc(fp))!= EOF) { if(ch == '\n') ch = '\0'; arr[i][j++]=ch; if(ch == '\0') { j = 0; i++; } }
//打印存在该字符的字符串 for(int k = 0;k<i;k++) { if((strrchr(arr[k],aim))!=NULL) puts(arr[k]); } fclose(fp); return 0; }

 

标签:prime,字符,13,ch,打印文件,int,char,字符串,include
来源: https://www.cnblogs.com/muyangbeihai/p/15854927.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有