| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2134 人关注过本帖
标题:初学结构体,程序老是崩,求大神指点
取消只看楼主 加入收藏
cjj843138864
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-12-23
结帖率:0
收藏
已结贴  问题点数:10 回复次数:7 
初学结构体,程序老是崩,求大神指点
#include "stdafx.h"
#include"stdlib.h"
#include"assert.h"
#include"string.h"

typedef struct _PERSON
{
    char *name;
    int count;
}PERSON;

int main()
{
    printf_s("请输入有几位候选人:");
    int n;
    scanf_s("%d", &n);
    PERSON *p = (PERSON *)malloc(sizeof(PERSON)*n);
    assert(p != NULL);
    for (int j = 0; j < n; j++)
    {
        char *s = (char *)malloc(sizeof(char) * 20);
        assert(s != NULL);
        p[j].name = s;
        printf_s("请输入有第%d候选人名字:", j + 1);
        scanf_s("%s", s);
    }
   return 0;
}
搜索更多相关主题的帖子: include 结构体 候选人 count 
2017-02-11 20:42
cjj843138864
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 2楼 炎天
改大了   但是还是不行
2017-02-11 21:30
cjj843138864
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 2楼 炎天
那只是代码的一部分  但是老是崩  对名字在堆里面开辟了一块空间   想在这个堆里面手写入字符串   就是不行   把scanf("%s",s);改成gets_s(s);也不行    改成for(int i=0;i<20;i++){scanf("%c",&s[i]);}不会崩   但是输入就不连续了   每次打完一个字母还要有Enter结束还只能打十个中间算上\0正好20个    怎么改代码才能在名字这个堆里面连续写入字符串
2017-02-11 21:37
cjj843138864
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 5楼 吹水佬
#include "stdafx.h"
#include"stdlib.h"
#include"assert.h"
#include"string.h"

typedef struct _PERSON
{
    char *name;
    int count;
}PERSON;

int main()
{
    printf_s("请输入有几位候选人:");
    int n;
    scanf_s("%d", &n);
    PERSON *p = (PERSON *)malloc(sizeof(PERSON)*n);
    assert(p != NULL);
    for (int j = 0; j < n; j++)
    {
        char *s = (char *)malloc(sizeof(char) * 30);
        assert(s != NULL);
        p[j].name = s;
        printf_s("请输入有第%d候选人名字:", j + 1);
        scanf_s("%s", s);
    }
    char input[20];
    printf_s("请输入有几个选举人:");
    int m;
    scanf_s("%d", &m);
    for (int i = 0; i < m; i++)
    {
        printf_s("第%d投票人:",i+1);
        gets_s(input);
        for (int k = 0; k < n; k++)
        {
            if (strcmp(p[k].name, input) == 0)
            {
                p[k].count++;
                break;
            }
        }
    }
    PERSON max=p[0];
    for (int a = 0; a < n - 1; a++)
    {
        if (p[a].count > p[a + 1].count)
        {
            max = p[a];
        }
    }
    printf_s("票数最多的是:");
    printf_s("%s-%d", max.name, max,max.count);

   return 0;
}
这是全部代码  也能运行吗?    为什么我的老是冲突
2017-02-11 22:12
cjj843138864
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 5楼 吹水佬
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-02-11 22:15
cjj843138864
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 6楼 yangfrancis
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
你的意思是这样改吗?  好像也不行啊
2017-02-11 22:20
cjj843138864
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 10楼 renkejun1942
好的
2017-02-11 22:27
cjj843138864
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2016-12-23
收藏
得分:0 
回复 11楼 炎天
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-02-11 22:37
快速回复:初学结构体,程序老是崩,求大神指点
数据加载中...
 
   



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

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