| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖
标题:莫明其妙的错误
只看楼主 加入收藏
Donie
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-11-2
收藏
 问题点数:0 回复次数:9 
莫明其妙的错误
我在打印一个数组是老是打印出一串莫名奇妙的中文
如:屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯


烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫

请问这是什么原因?
搜索更多相关主题的帖子: 莫明其妙 
2007-01-08 02:06
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 

你倒是把程序写拿出来啊
2007-01-08 02:51
crazyc
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-8-5
收藏
得分:0 

是啊。。。。。。。。。。。。。。

2007-01-08 07:00
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 
二进制

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-01-08 08:18
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 
或输出的东西越出有效值

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-01-08 08:19
dragonfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1024
专家分:0
注 册:2006-3-20
收藏
得分:0 
在VC中跟踪时会遇到类似的字符串...

2007-01-08 08:37
Donie
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-11-2
收藏
得分:0 

#include <stdio.h>
#include <stdlib.h>
#define MAXSTRLEN 100
typedef unsigned char str[MAXSTRLEN+1];
void get_next(str T,int* next);
int Compare_char (str T,str S,int pos);

int next[MAXSTRLEN+1];
main()
{
str S,T,save;
int i,j,k=0;

gets(save);
printf("%s\n",save);


for(i=1;save[k]!=' ';i++,k++)
S[i]=save[k];
S[0]=i-1;

printf("%d %s",S[0],S+1);
k=i-1;
for(j=0;save[k]!=(unsigned char )NULL;j++,k++)
T[j]=save[k];
T[0]=j-1;
printf ("%d %s\n",T[0],T+1);
get_next(T,next);
if(Compare_char (T,S,1)==0)
printf("匹配没有成功");
else
printf("%s是%s的子串",T+1,S+1);
system("pause");
}

void get_next(str T,int* next)
{
int i=1,j=0;
next[1]=0;
while(i<T[0])
{
if(j==0||T[i]==T[j])
{++i;
++j;
next[i]=j;
}
else
j=next[j];
}
}

int Compare_char (str T,str S,int pos)
{
int i,j;
i=pos;j=1;
while (i<=S[0]&&j<=T[0])
{
if(j==0||S[i]==T[j])
{++i;
++j;}
else
j=next[j];
}
if(j>T[0]) return i-T[0];
else return 0;
}

字符串色打印出来后面总是 跟着中文,消也消不掉

2007-01-08 10:07
grub2linux
Rank: 1
等 级:新手上路
帖 子:335
专家分:0
注 册:2004-12-25
收藏
得分:0 
这种错误一般是
1
给数组分配内存空间前没有清零,导致里面有随机值
2
如果数组的最后一个元素不是0,打印时就会打出紧接着它的后面的内存内容(很可能是随机值).
因为在C中,打印字符串时遇到\0才结束.

[此贴子已经被作者于2007-1-8 11:14:37编辑过]


有缘相识!我中文系的 3月拿下C/C++/VC 5天写游戏 2月写游戏系统 有空去http://mykool.go2.
2007-01-08 11:11
Donie
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-11-2
收藏
得分:0 
怎么清零阿?
2007-01-08 21:04
神秘失恋
Rank: 1
等 级:新手上路
帖 子:663
专家分:0
注 册:2007-1-6
收藏
得分:0 
字符串要以'\0'结尾...

上帝之手.........
2007-01-08 21:59
快速回复:莫明其妙的错误
数据加载中...
 
   



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

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