C语言——动态分配数组malloc的使用及读走回车换行符问题

好久没有写C语言了,用了malloc动态分配数组但是却忘了到如malloc.h的头文件,报了错都不到为什么,还是太大意了,时间长了,C语言都忘得差不多了!
而且多个输入函数scanf()连着使用的时候一定要注意回车换行符!特别是多次输入中混着字符串的输入,一定要把回车换行符读走,不然会被读进字符或者字符串里面影响运行结果!

使用一些函数的时候要是报了奇怪的错误却不知道为什么那就要想想是不是要导入相应的头文件!

求一维字符数组中的数字和

动态创建不大于50字节的一维字符数组(大小由用户输入,范围为0<n<=50),并输入不超过n的字符串s。编程将s字符串中的数字字符转换成对应的数值,计算出这些数值的累加和并输出。已知数字0的ASCII码为48,数字9的ASCII码为57。

输入格式:
用户输入一个1到50之间的整数,并回车。 在第二行输入一个字符串,假定用户输入的字符串只包含大小写字母和数字,不会含有空格和特殊符号。

输出格式:
一个整数。

输入样例:
输入40代表字符串长度不超过40。对下面用户输入的字符串,其中的数字加起来是:5+1+2+6+8=22

40
abs5def126jkm8

输出样例:

22

输入样例:

30
adbdesdgdgdgdgd

输出样例:

0

上代码

#include<stdio.h>
#include<malloc.h>

int main(){
    int n,sum=0;
    scanf("%d",&n);
    char *j;
    char *p = (char*)malloc(n*sizeof(char));
    char c =getchar();
    gets(p);
    
    for(;*p != '\0';p++){
        if(*p>47 && *p<58){
            sum += (*p-48);
        }
    }
    printf("%d\n",sum);
    
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值