gpt4 book ai didi

c - 使用 c 在给定的字符串文本中添加三位数字

转载 作者:太空宇宙 更新时间:2023-11-04 08:24:54 24 4
gpt4 key购买 nike

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

int add(char s[])
{
char p[3];
int i=0, j=0, sum=0;
for(i=0;s[i]!='\0';i++)
{
if(isdigit(s[i])&&isdigit(s[i+1])&&isdigit(s[i+2])&&!isdigit(s[i+3])&&!isdigit(s[i-1]))
{
p[0]=s[i];
p[1]=s[i+1];
p[2]=s[i+2];
sum+=atoi(p);
}

}
return sum;
}

上面我尝试编写代码以在字符串文本中仅添加三位数字,但它不起作用。无法弄清楚问题是什么。

最佳答案

如果我理解您想要将字符串中前 3 位数字的总和相加,那么您肯定会遇到困难。将字符串传递给您的函数后,只需将指针分配给字符串并检查字符串中的每个字符。如果 char 是数字,则将数字添加到 sum。找到 3 位数字后,只需返回总和即可。 (您也可以使您的函数通用以返回您选择的任意数字的总和)。

注意:您必须先将数字的 ascii 值转换为数值,然后再将其添加到求和中。 (即 ascii 字符 9 - '0' 是数字 9,等等)(参见 ascii character values)

这是一个简短的示例,它使用上述方法添加在字符串中找到的前 3 位数字。如果您有任何疑问或不同的需求,请告诉我。

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

int add_ndigits (const char *s, size_t ndigits)
{
const char *p = s; /* pointer to string */
int sum = 0;
size_t count = 0;

while (*p) { /* for each char in string */
if (*p >= '0' && *p <= '9') { /* check if it is a digit */
sum += *p - '0'; /* if so add value to sum */
count++; /* increment digit count */

if (count == ndigits) /* if count = ndigits break */
break;
}
p++;
}

return sum; /* return the sum of the first ndigits in string */
}

int main (void) {

char string[] = "this is 1 string with 2 or 3 more digits like 1, 2, 7, etc.";

int sum3 = add_ndigits (string, 3);

printf ("\n The sum of the first 3 digits in 'string' is: %d\n\n", sum3);

return 0;
}

输出

$ ./bin/add3string

The sum of the first 3 digits in 'string' is: 6

关于c - 使用 c 在给定的字符串文本中添加三位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31080909/

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