| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4333 人关注过本帖
标题:结构体中定义的字符数组怎么初始化的问题
只看楼主 加入收藏
etsunny
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-10-11
收藏
 问题点数:0 回复次数:6 
结构体中定义的字符数组怎么初始化的问题
结构体中定义的字符数组存好数据后,剩余的尾部不是空的,总是有些无关的数据在后面的空余部分,是怎么回事呢
搜索更多相关主题的帖子: 结构体 定义 字符 
2007-11-08 22:49
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
以下是引用etsunny在2007-11-8 22:49:24的发言:
结构体中定义的字符数组存好数据后,剩余的尾部不是空的,总是有些无关的数据在后面的空余部分,是怎么回事呢

struct st {
char name[21];
int num;
};

struct st co = {
"cosdos",
21
};

/* C 中的字符串是以空字符结尾的 */

name 的内容 {'c', 'o', 's', 'd', 'o', 's', '\0', ....剩余的数据是未知的.....}


—>〉Sun〈<—
2007-11-08 22:57
etsunny
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-10-11
收藏
得分:0 

struct st {
char name[21];
int num;
};

input ()
{
int i=0;
char ch;
while(i!=21)
{
scanf("%d,%c\n",&i,&ch);
if(0<i<19)
i=19;
else i++;
struct.name[i]=ch;
}
}
output ()
{输出该字符数组的21个元素}

当对数组多次操作时就有问题,


圣火从希腊蔓延,带着普罗米修斯的祝愿
2007-11-08 23:49
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
以下是引用etsunny在2007-11-8 23:49:09的发言:

struct st {
char name[21];
int num;
};

input ()
{
int i=0;
char ch;
while(i!=21)
{
scanf("%d,%c\n",&i,&ch);
if(0<i<19)
i=19;
else i++;
struct.name[i]=ch;
}
}
output ()
{输出该字符数组的21个元素}

当对数组多次操作时就有问题,

这段程序问题还真多



//----------------------------------------------------------------------------//
// 楼下是修改版 //
//----------------//

[此贴子已经被作者于2007-11-9 0:14:11编辑过]


—>〉Sun〈<—
2007-11-08 23:53
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 

#include <stdio.h>

struct nes
{
char name[21];
int num;
} st; /* st 全局结构变量 */

void input(struct nes * st); /* 函数原型 */
void show_nes(struct nes * st); /* 函数原型 */

//----------------------------------------------//
// Main //
//--------//

int main(void)
{
printf("input :\n");
input(&st);
printf("Show :\n");
show_nes(&st);
getchar();
return 0;
}

//----------------------------------------------//
// 函数 //
//--------//

void input(struct nes * st)
{
printf("请输入您的 ID 和您的姓名(中间以空格空开):\n");
while(scanf("%d %20s", &st->num, st->name) != 2)
{
while(getchar() != '\n');
printf("请按照要求正确输入!\n");
}
while(getchar() != '\n');
}

void show_nes(struct nes * st)
{
printf("%d %s\n", st->num, st->name);
}


[此贴子已经被作者于2007-11-9 0:20:37编辑过]


—>〉Sun〈<—
2007-11-09 00:13
etsunny
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-10-11
收藏
得分:0 

还有个问题,华字到了TC里面变样了,输出来怎么不会还原呢,郁闷


圣火从希腊蔓延,带着普罗米修斯的祝愿
2007-11-10 17:40
etsunny
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2007-10-11
收藏
得分:0 

怎么办?


圣火从希腊蔓延,带着普罗米修斯的祝愿
2007-11-10 17:46
快速回复:结构体中定义的字符数组怎么初始化的问题
数据加载中...
 
   



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

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