小编alp*_*ra7的帖子

这个scanf用法有什么问题?

这是一个五位数字作为输入.我希望这是计算其数字总和的程序,当我在dev编译器中运行程序时它停止响应并且它为每五位数字给出255作为输出.

#include<stdio.h>

void main()
{
    int n, a, b, c, d, e, f;
    printf("entre a no ");
    scanf("%d",n);

    a = n % 10;
    n = n / 10;
    b = n % 10;
    n = n / 10;
    c = n % 10;
    n = n / 10;
    d = n % 10;
    n = n / 10;
    e = n;
    f = (a + b + c + d + e);
    printf("sum of five digit=%d",f);
}
Run Code Online (Sandbox Code Playgroud)

预期输出是五位数的总和.

但它总是停止响应,它显示一个对话框,要求我关闭该程序.关闭程序后,无论输入的数量是多少,它总是输出255.

c scanf

2
推荐指数
1
解决办法
96
查看次数

避免多类型结构的memset

我想避免memset()在这样的结构上使用:

typedef struct {
    int size;
    float param1;
} StructA;

typedef struct {
    StructA a;
    unsigned int state;
    float param2;
} Object;
Run Code Online (Sandbox Code Playgroud)

我可以做这样的事情(伪代码,我现在无法检查)?

Object obj;
int *adr = (int*)&obj;
for (int i; i < sizeof(obj); i++) {
    *adr++ = 0;
}
Run Code Online (Sandbox Code Playgroud)

它会将obj的每个成员设置为零吗?

编辑:回答评论问题.我一直在研究一些情况(使用uni-type结构),其memset速度比手动初始化慢两倍.所以我会考虑尝试初始化多类型结构.

避免memcpy()也会很好(避免使用<string.h>lib).

c memset memcpy

-1
推荐指数
1
解决办法
404
查看次数

标签 统计

c ×2

memcpy ×1

memset ×1

scanf ×1