为什么输入命令后会出现这种情况

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

int search(int ch, FILE* fp);

int main(int argc, char* argv[])
{
    FILE* fp;
    int i, ch=1, ct;
    int count = 0;
    errno_t err;

    if (argc < 2)
    {
        fprintf(stderr, "Usage: %s character filename[s]\n", argv[0]);
        exit(EXIT_FAILURE);
    }
    if (strlen(argv[1]) != 1)
    {
        fprintf(stderr, "The second argument must be a character!\n");
        exit(EXIT_FAILURE);
    }
    if (argc == 2)
    {
        fp = stdin;
        ch = argv[1][0];
        printf("Please enter a string (EOF to quit): ");
        count = search(ch, fp);
        printf("%c appeared %d times.\n", ch, count);
    }
    else if (argc > 2)
    {
        ch = argv[1][0];
        for (i = 2; i < argc; i++)
        {
            if ((err = fopen_s(&fp,argv[i], "r")) == NULL)
            {
                fprintf(stderr, "Can't open file %s\n", argv[i]);
                continue;
            }
            printf("File %s:\n", argv[i]);
            while ((ct = getc(fp)) != EOF)
            {
                putchar(ct);
            }
            rewind(fp);
            count = search(ch, fp);
            printf("%c appeared %d times in file %s\n", ch, count, argv[i]);
            if (fclose(fp) != 0)
            {
                fprintf(stderr, "Can't close file %s\n", argv[i]);
            }
        }
    }

    return 0;
}

int search(int ch, FILE* fp)
{
    int find;
    int n = 0;

    while ((find = getc(fp)) != EOF)
    {
        if (ch == find)
        {
            ++n;
        }
    }
    return n;
}


img

img

【相关推荐】



  • 你可以看下这个问题的回答https://ask.csdn.net/questions/6211962
  • 这篇博客你也可以参考下:为何频烦调用指针会占用大量内存
  • 您还可以看一下 陈槐老师的零基础新手入门软件测试必知必会课程中的 什么是系统测试小节, 巩固相关知识点
  • 除此之外, 这篇博客: 猜数字游戏(伪随机数对猜数字游戏的影响)中的 为什么会出现这个问题呢? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    通过查阅一些资料了解到:

    计算机不可能产生真正的随机数。在这里,我们使用的随机数是将随机数种子(srand函数介绍的参数)作为初始条件,经过一定的计算产生的。

    这么说可能会有一点难以理解,我们来举个游戏中的例子:

    比如LOL就有一套独立的伪随机机制,以25%暴击举例,如果蛮王第一刀没暴击,第二刀也没暴击,第三刀还是没暴击,那么第四刀暴击的几率就会大大的提升(不是25%),相信很多玩游戏的同学都会有这种体会,这里的暴击就是一个伪随机数。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

37行fopen_s返回0说明打开成功