#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;
}
【相关推荐】
通过查阅一些资料了解到:
计算机不可能产生真正的随机数。在这里,我们使用的随机数是将随机数种子(srand函数介绍的参数)作为初始条件,经过一定的计算产生的。
这么说可能会有一点难以理解,我们来举个游戏中的例子:
比如LOL就有一套独立的伪随机机制,以25%暴击举例,如果蛮王第一刀没暴击,第二刀也没暴击,第三刀还是没暴击,那么第四刀暴击的几率就会大大的提升(不是25%),相信很多玩游戏的同学都会有这种体会,这里的暴击就是一个伪随机数。
37行fopen_s返回0说明打开成功