gpt4 book ai didi

c - 如何对文本文件中的所有数字求和?

转载 作者:行者123 更新时间:2023-11-30 18:43:52 26 4
gpt4 key购买 nike

我在对文本文件中的所有数字求和时遇到问题。它可能看起来很简单,但问题是我的代码不会将 2000 识别为 2000,而是识别为 2,0,0,0,因此它将把数字设置为 4 个单独的数字:

我尝试一次读取文本文件中的一个字母,因为我还想计算一个字母出现的次数

这是我想读的文字:

位于波鸿的 Die Ruhr-Universität Bochum (RUB) ist mit 42954 Studierenden (Stand WS 2018/19) eine der zehn größten Universitäten in Deutschland.

1962 年卢布 war (Aufnahme des Lehrbetriebs 1965)是德国联邦共和国的第一所大学。位于奎伦堡的城市大学是位于城市的大学:它是大学中的一所大学。Die Universität、die Wohnstadt Hustadt und das beide versorgende Einkaufszentrum Uni-Center dominieren seither den Stadtteil。

int main()
{
char txtname[2000];
FILE *fp;
int buchstaben[26] = {0};
int i;
int temp;
int sum;


printf("Dateiname:\n");

scanf("%s",&txtname);

printf("%s",&txtname);

strcat(txtname,".txt");

fp = fopen(txtname,"r");




if(fp == NULL) {
printf("Datei konnte nicht geoeffnet werden.\n");
}else {
while( (temp=fgetc(fp)) != EOF)
{
if(temp >= 'a' || temp <= 'z')
buchstaben[(temp - 'a')]++;
if( temp >= 'A' || temp <= 'Z')
buchstaben[(temp - 'A')]++;
if(temp>= 48 || temp<= 57)
}
printf("Anzahl der einzelnen Buchstaben: \n");

for(i=0;i<26;i++)

printf("Buchstabe %c kommt %d mal vor.\n",i+'a',buchstaben[i]);
}
printf("Die Summe aller Zahlen sind:%d",sum);

fclose(fp);
}

最佳答案

您的循环一次读取一个字符。当你看到一个数字时,你必须读出所有的数字,并在读出数字的同时把它们变成一个数字。

一种方法是按照您的 if(temp>= '0' && temp<= '9') 进行操作。循环读取字符并处理数字。

但是,您现在读到的最后一个字符不是数字。然后您结束数字读取循环,但现在您的外循环出现问题,因为已读取字符但尚未处理。要解决此问题,请使用 ungetc (在文档中查找)。

if(temp>= '0' && temp<= '9') {
int number= temp-'0';
while ((temp= fgetc(fp))>='0' && temp <='9')
number= number * 10 + (temp-'0');
ungetc(temp,fp);
sum += number;
}

读取数字“20”,您首先读取的是 2 。您看到的下一个数字表示您已经读过的数字是十倍,因此您将其乘以十。然后通过减去 '0' 将 ASCII 数字转换为十进制数。并将其添加到您已经阅读过的数字中。请注意,ASCII 代码确保数字字符的顺序为'0,'1','2',...'9'。所以'3' - '0' = 3

关于c - 如何对文本文件中的所有数字求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59909980/

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