当前位置: 代码迷 >> C语言 >> 结构体中定义的字符数组怎么初始化的问题
  详细解决方案

结构体中定义的字符数组怎么初始化的问题

热度:306   发布时间:2007-11-08 22:49:24.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', ....剩余的数据是未知的.....}


----------------解决方案--------------------------------------------------------

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个元素}

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


----------------解决方案--------------------------------------------------------
以下是引用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编辑过]


----------------解决方案--------------------------------------------------------

#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编辑过]


----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------

怎么办?


----------------解决方案--------------------------------------------------------
  相关解决方案