输入字符串,如123,求和1 + 2 + 3,如果字符串不全是数字,就报错
运行环境 : ubuntu 22.04
以下是一些想法,欢迎大牛优化,
[^ ]
除了这个框起来的字符,其他都能输入,要是有输入空格需求可以用到这个东西,用法在代码里
.
.
.
.
.
.
.
.
.
.
.
.
.
#include <stdio.h>
int sum_char(char * a) //接收地址
{
int sum = 0;
while (*a != '\0') //地址指向字符为'\0'就停止循环
{
sum += *a - 48; //利用ascii求和
a++; //指针指向下一个字符
}
return sum; //返回和
}
int main ()
{
char a[64] = {'\0'};
char *p_a = a;
scanf ("%[^\n]",a); // 输入字符串,除了[^ ]内的字符都能输入
while (*p_a != '\0') //遇到'\0'就停止循环
{
if (*p_a < '0' || '9' < *p_a) //如果输入字符不纯就报错
{
printf ("请输入纯数字字符串\n");
break;
}
p_a++; //协助走完整个数组
if (*p_a == '\0') //要是走完了整个数组发现没有非数字字符,就运行以下语句
{
printf ("%d\n",sum_char(a)); //传递数组首地址并输出返回值
break;
}
}
return 0;
}