gpt4 book ai didi

c - 求字符串中整数的总和

转载 作者:行者123 更新时间:2023-11-30 14:48:32 25 4
gpt4 key购买 nike

我需要输出句子内数字的总和。例如:

  • 输入:abc3x casa2 y34zq
  • 输出:3+2+3+4 = 12

我需要阅读所有包含空格的句子才能执行此操作,但我的 getchar 循环不起作用。能帮我找出问题所在吗?

int main() {

int i = 0;
int somma = 0;
char s[MAX];

printf("inserisci la stringa : ");
scanf("%s",s);

while((s[i] = getchar()) != '\n'){
i++;
if(s[i]>'0' && s[i]<'9'){
somma+= (int)s[i]-(int)'0';
}
}
printf("la somma è = %d", somma);
}

我不必使用getchar。我更喜欢使用 fgets,因为我知道 fgets 可以读取包括空格在内的整行。

最佳答案

既然您可以使用fgets()您可以阅读整行,然后使用 isdigit()找到数字。

FILE *fp;
fp = fopen("file.txt" , "r");
if(fp == NULL) {
perror("Error opening file");
return(-1);
}

char line[MAX];
if( fgets(line, MAX, fp) == NULL ) { // Read entire line
perror("Error reading file");
return -1;
}

int sum = 0;

int len = strlen(line);
for (int i = 0; i < len; i++) {
if (isdigit( (unsigned char)line[i] )) { // cast handles negative values of line[i]
sum += line[i] - '0'; // Add integer value to sum
}
}

基本思想是相同的,只是直接循环遍历字符串,而不是在每一步尝试使用 getchar() 读取它。

关于c - 求字符串中整数的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50348232/

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