| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 561 人关注过本帖
标题:SCANF的小問題
只看楼主 加入收藏
kireinasora
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-1-12
收藏
 问题点数:0 回复次数:5 
SCANF的小問題
程序代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

typedef struct _bmiData{
        int kg;
        float height;
        float bmi;
        char *bmiDef;
}BMIDATA;



int main(){
        int i;
        int amount;
        scanf("%d", &amount);
        BMIDATA **data = (BMIDATA**)malloc(amount * sizeof(BMIDATA));

        for (i = 0; i < amount; i++){
                scanf("%d", &((*(data + i))->kg));
                printf("%d", (*(data + i))->kg);
        }


        free(data);
}



請問為什麼上面這樣,
scanf("%d", &((*(data + i))->kg)); <-- 這樣運行時會出現錯誤呢?

我想了好久還是沒解答,請教各位大神!! 大恩不言謝~
2015-01-12 22:16
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
你定义的是二重指针,它一重里面本来不就是地址吗?

一片落叶掉进了回忆的流年。
2015-01-12 22:38
kireinasora
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-1-12
收藏
得分:0 
嗯嗯,但是我好像要知道 kg 的地址才能寫入?
可以告訴我應該怎做嗎?
2015-01-12 22:59
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>

typedef struct _bmiData {
    int kg;
    float height;
    float bmi;
    char *bmiDef;
} BMIDATA;

int main(void) {
    int i;
    int amount;
    BMIDATA *data = NULL;

    scanf("%d", &amount);
    data = calloc(amount, sizeof(BMIDATA));

    if(!data) exit(0);

    for(i = 0; i < amount; i++) {
        scanf("%d", &((data + i)->kg));
        printf("%d ", (data + i)->kg);
    }

    puts("");
    free(data);

    return 0;
}

Only the Code Tells the Truth             K.I.S.S
2015-01-12 23:03
kireinasora
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-1-12
收藏
得分:0 
以下是引用longwu9t在2015-1-12 23:03:58的发言:


#include <stdio.h>
#include <stdlib.h>

typedef struct _bmiData {
    int kg;
    float height;
    float bmi;
    char *bmiDef;
} BMIDATA;

int main(void) {
    int i;
    int amount;
    BMIDATA *data = NULL;

    scanf("%d", &amount);
    data = calloc(amount, sizeof(BMIDATA));

    if(!data) exit(0);

    for(i = 0; i < amount; i++) {
        scanf("%d", &((data + i)->kg));
        printf("%d ", (data + i)->kg);
    }

    puts("");
    free(data);

    return 0;
}


感謝大大辛苦幫完看完再幫我想出解決方法@@
不過我也另外寫了一段和大大不同的,好像也可以~


程序代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

typedef struct _bmiData{
    int kg;
    float height;
    float bmi;
    char *bmiDef;
}BMIDATA;





int main(){
    int i;
    int amount;
    scanf("%d", &amount);
    BMIDATA **data = (BMIDATA**)malloc(amount * sizeof(BMIDATA));

    for (i = 0; i < amount; i++){
        *data = (BMIDATA*)malloc(sizeof(BMIDATA));
        scanf("%d",  &((*(data + i))->kg));
        printf("%d", (*(data + i))->kg);
    }



    free(data);
}
2015-01-12 23:23
BuilderZ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:82
专家分:123
注 册:2014-9-22
收藏
得分:0 
2015-01-15 04:37
快速回复:SCANF的小問題
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015733 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved