急啊,c语言中printf显示不正常啊

来源:百度知道 编辑:UC知道 时间:2024/05/30 21:17:45
#include<stdio.h>
typedef struct
{
char ch[20];
int length;
}sstring;
int main()
{
sstring *s;
char a[5]={'a','b','c','d','f'};
int i;
for(i=0;i<5;i++)
{
s->ch[i]=a[i];
}
printf("%s",s->ch);
getch();
}

显示结果有点乱码,急啊!
还有补救的办法吗?

这是因为没有结束符在字符串后面加上'\0'就好了!我给你改了一下,如下:
#include<stdio.h>
typedef struct
{
char ch[20];
int length;
}sstring;
int main()
{
sstring *s;
char a[5]={'a','b','c','d','f'};
int i;
for(i=0;i<5;i++)
{
s->ch[i]=a[i];
}
s->ch[5]='\0'
printf("%s",s->ch);
getch();
}

这里的s只是一个指针,使用前必须先分配空间。
#include <malloc.h>
#include <mem.h> // tc 2使用的头文件,其它编译器应该是memory.h
#include <stdio.h>

typedef struct
{
char ch[20];
int length;
}sstring;

int main()
{
sstring *s;
s = (sstring *)malloc(sizeof(sstring));
memset(s, 0, sizeof(sstring));

char a[5]={'a','b','c','d','f'};
int i;

for(i=0;i<5;i++)
{
s->ch[i]=a[i];
}