小编Kan*_*oja的帖子

C字符串atoi int数组

我想做以下事情:

  1. 将输入字符串转换为int.
  2. 通过使用指针和for循环来汇总int数组.
  3. 如果用户只输入ENTER,程序将打印答案.

我的代码:

int main(void)
{
    int i, a[10], sum = 0;
    int * b;
    b = a;
    char c[10];
    printf ("Please enter some numbers:\n");

    for(i = 0 ; i < 10 ; i++)
    {
        (void) fgets(c, (sizeof * b), stdin);
        if(c[0] == '\n')
        {
            break;
        }
        *(b + i) = atoi(c);
        sum = sum + *(b + i);
    }
    printf ("sum : %d \n", sum);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有些奇怪我无法弄清楚为什么.

它只适用于两位数:

$Please enter some numbers:
$32
$31
$1 …
Run Code Online (Sandbox Code Playgroud)

c arrays

3
推荐指数
1
解决办法
503
查看次数

有关Misra规则11.6的查询(MISRA C:2012)

我无法在此行中解决米斯拉规则11.6警告:

uint32_t * delay = (uint32_t *)0x40086D0C ;
Run Code Online (Sandbox Code Playgroud)

[ 仅供参考: typedef long unsigned int uint32_t;]

PC-Lint:注释923:从int转换为指针[MISRA 2012 Rule 11.6,必填]

我做了什么:

  • 明确类型转换,但不起作用
  • 使用memset(),它正在工作,但这不是解决Misra警告的正确方法。因为那是不必要的增加系统上的函数调用,它可能会降低系统性能。

您能否分享有关我的问题的有用想法?我们将不胜感激。

c misra

3
推荐指数
1
解决办法
1184
查看次数

标签 统计

c ×2

arrays ×1

misra ×1