帮我看看为什么不能打印出来字符???

a_mao 2003-10-30 09:17:46
#define maxsize 256
typedef struct
{
char ch[maxsize];
int length;
} seqstring ;


int samestring(seqstring *x,seqstring *y)
{
int i,k=1;
char a;
i = 0;
if(x->length!=y->length) return -1;
do{
printf("%c\n",x->ch[i]); //该行没有效果为什么??
//程序能通过就是没有打印的字符
if(x->ch[i] == y->ch[i])
i++;
else
k = 0 ;
}while(k&&i<x->length);
return k;
}
main()
{
int i;
seqstring *x,*y;
clrscr();
strcpy(x->ch,"abcdess");
strcpy(y->ch,"abcde");
printf("%s\n%s\n",x->ch,y->ch);
x->length = strlen(x->ch);
y->length = strlen(y->ch);
i = samestring(x,y);
if(i ==1)
printf("same string\n");
else
printf("not the same string\n");


getch();
}
...全文
24 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
a_mao 2003-10-30
  • 打赏
  • 举报
回复
呵呵!是啊!怎么这么糊涂谢谢大家
散分呵呵想转型,呵呵看来功底不够差太多阿·!呵呵
scancat 2003-10-30
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define maxsize 256
typedef struct
{
char ch[maxsize];
int length;
} seqstring ;



int samestring(seqstring *x,seqstring *y)
{
int i,k=1;

i = 0;
if(x->length!=y->length) return -1;//你这句话不对呀!去掉应该就没有问题了
do{
printf("%c\n",x->ch[i]);
if(x->ch[i] == y->ch[i])
i++;
else
k = 0 ;
}while(k&&i<x->length);
return k;
}
main()
{
int i;
seqstring *x,*y;
x=(seqstring*)malloc(sizeof(seqstring));
y=(seqstring*)malloc(sizeof(seqstring));
strcpy(x->ch,"abcdess");
strcpy(y->ch,"abcde");
printf("%s\n%s\n",x->ch,y->ch);
x->length = strlen(x->ch);
y->length = strlen(y->ch);
i = samestring(x,y);
if(i ==1)
printf("same string\n");
else
printf("not the same string\n");

free(x);
free(y);

}
kerry803 2003-10-30
  • 打赏
  • 举报
回复
因为你的x->length和y->length的值不一样,所以当执行下面语句的时候:
if(x->length!=y->length) return -1;
函数已经返回了“-1”这个值。
所以其后的语句:
do{
printf("%c\n",x->ch[i]); //该行没有效果为什么??
//程序能通过就是没有打印的字符
if(x->ch[i] == y->ch[i])
i++;
else
k = 0 ;
}while(k&&i<x->length);
return k;
根本就不会执行,当然无法有效果了!
a_mao 你说对吗?
phbzy 2003-10-30
  • 打赏
  • 举报
回复
你把两个字符窜设置一样就可以了!
point_to 2003-10-30
  • 打赏
  • 举报
回复
什么意思??你的
strcpy(x->ch,"abcdess");
strcpy(y->ch,"abcde");
本来就不一样,那么函数samestring返回的就是一个-1了!
程序没什么不妥了!
playmud 2003-10-30
  • 打赏
  • 举报
回复
你的return对吗?
phbzy 2003-10-30
  • 打赏
  • 举报
回复
你的两个字符串长度不想同,当然打印不出来了呀??
a_mao 2003-10-30
  • 打赏
  • 举报
回复
我在vc下又调试了一次还是同样的结果阿!~
vc下代码是

#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define maxsize 256
typedef struct
{
char ch[maxsize];
int length;
} seqstring ;



int samestring(seqstring *x,seqstring *y)
{
int i,k=1;

i = 0;
if(x->length!=y->length) return -1;
do{
printf("%c\n",x->ch[i]);
if(x->ch[i] == y->ch[i])
i++;
else
k = 0 ;
}while(k&&i<x->length);
return k;
}
main()
{
int i;
seqstring *x,*y;
x=(seqstring*)malloc(sizeof(seqstring));
y=(seqstring*)malloc(sizeof(seqstring));
strcpy(x->ch,"abcdess");
strcpy(y->ch,"abcde");
printf("%s\n%s\n",x->ch,y->ch);
x->length = strlen(x->ch);
y->length = strlen(y->ch);
i = samestring(x,y);
if(i ==1)
printf("same string\n");
else
printf("not the same string\n");

free(x);
free(y);

}
a_mao 2003-10-30
  • 打赏
  • 举报
回复
显示的结果是:
abcdess
abcde
not the same string

就没有了但是子函数中的打印没有显示出来阿!
a_mao 2003-10-30
  • 打赏
  • 举报
回复
可是我在主函数中又加了
x = (seqstring*)malloc(sizeof(seqstring));
y = (seqstring*)malloc(sizeof(seqstring));
之后仍然没有变化阿!!!
zoezinsser 2003-10-30
  • 打赏
  • 举报
回复
同意arfi()

用malloc()分配,free()释放吧!
arfi 2003-10-30
  • 打赏
  • 举报
回复
你主函数中的x,y定义为指针,未对其进行初始化(分配内存)

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧