gpt4 book ai didi

C:计算文件中大写/小写字符的数量

转载 作者:太空宇宙 更新时间:2023-11-03 23:22:48 25 4
gpt4 key购买 nike

好吧,我正在尝试从一个文件中读取文本,然后将有多少个大写和小写字符以及多少个数字写入另一个文件。

#include <stdio.h>

int main()
{
int *p;
int caps, low, num, i;
caps = low = num = 0;

FILE *fin, *fout;

fin = fopen("input.txt","r");
fout = fopen("output.txt","w");

if (fin == NULL)
{
printf("FILE ERROR\n");
return 1;
}
else
printf("BABE THIS WORKS\n");

i=0;

while(fscanf(fin, "%s", p) != EOF)
{
if(p[i] >= 'a' && p[i] <= 'z')
low++;
if(p[i] >= 'A' && p[i] <= 'Z')
caps++;
if(p[i] >= '0' && p[i] <= '9')
num++;
}

fprintf(fout,"Lower: %d, Caps: %d, Numbers: %d", low, caps, num);

fclose(fin);
fclose(fout);

system("pause");
return 0;
}

但是,当我运行它时,它只是“崩溃”并且没有在 output.txt 文件中写入任何内容。

我错过了什么?

最佳答案

由于您正在比较字符,因此最简单的阅读情况是使用面向字符的输入。该库提供了几个面向字符的输入函数,(例如getchar()(从stdin读取)或getcfgetcFILE* 流 读取)。这避免了在您读取后必须遍历任何数组来检查每个字符。

使用您的方法的一个简短示例如下。唯一的调整是包括一个三元运算符,它可以读取/写入作为程序参数给出的文件名(或者如果没有给出文件名,则从默认的 stdinstdout ).它只是防止对文件中的文件名进行硬编码。要在 input.txtoutput.txt 上使用该程序,只需将该程序调用为 ./programname input.txt output.txt:

#include <stdio.h>

int main (int argc, char **argv)
{
int p, caps, low, num;
p = caps = low = num = 0;

FILE *fin, *fout;

/* read from filename argv[1] (default: stdin),
write to filename argv[2] (default: stdout) */
fin = argc > 1 ? fopen (argv[1], "r") : stdin;
fout = argc > 2 ? fopen (argv[2], "w") : stdout;

if (fin == NULL) {
fprintf (stderr, "input file open failed.\n");
return 1;
}
if (fout == NULL) {
fprintf (stderr, "output file open failed.\n");
return 1;
}

while ((p = fgetc (fin)) != EOF)
{
if ('a' <= p && p <= 'z') low++;
if ('A' <= p && p <= 'Z') caps++;
if ('0' <= p && p <= '9') num++;
}

fprintf (fout, "\n Lower: %d, Caps: %d, Numbers: %d\n\n", low, caps, num);

if (fin != stdin) fclose(fin);
if (fout != stdout) fclose(fout);

//system("pause");

return 0;
}

示例输入文件

$ cat ../dat/captnjack.txt
This is a tale
Of Captain Jack Sparrow
A Pirate So Brave
On the Seven Seas.

输出(读取/写入默认标准输入/标准输出)

$ ./bin/countltrs <../dat/captnjack.txt

Lower: 47, Caps: 12, Numbers: 0

如果您还有其他问题,请告诉我。

关于C:计算文件中大写/小写字符的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34755751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com