拜托把下面C语言转java语言 串结构的

#include<stdio.h>

#include<stdlib.h>
#include<iostream.h>
#define MAXSTRLEN 255
#define OK 1
#define ERROR 0
#define OVERFLOW 0
typedef char HString[MAXSTRLEN+1];
typedef int status;
int next[MAXSTRLEN];
char *chars;
typedef struct{
char *ch;

int length;
}SString;
char* ToString(char array[], int array_size)//字符数组转换成字符串

{
char *p;
int i;
p = (char*)malloc(array_size + 1);

for(i = 0; i < array_size; i++)

{

*(p+i) = '0' + array[i];

}

*(p+i) = '\0';
return p;
}
status StrAssign(SString &T,char *chars)//生成一个其值等于串常量chars的串
T
{

int i;

int j;

char *c;

for(i=0,c=chars;*c!='\0';++i,++c);

if(!i)

{

T.ch=NULL;

T.length=0;

}

else

{

if(!(T.ch=(char *)malloc(i *sizeof(char))))

exit(OVERFLOW);

for(j=0;j<i;j++)

{

T.ch[j]=chars[j];

}

T.length=i;

}

return OK;
}
void get_next(SString T,int next[])//求next值

{

int j=1,k=0;

next[1]=0;

while(j<T.length)//abaabcac
{
if(k==0||T.ch[k-1]==T.ch[j-1])
{
++j;
++k;
next[j]=k;
}

else k=next[k];

}
}

int Index(SString S,SString T,int pos)//匹配算法
kmp
{

int i=pos,j=1;

while(i!=S.length+1&&j!=T.length+1)

{
if(j==0||S.ch[i-1]==T.ch[j-1])
{
j++;
i++;
}
else
j=next[j];

}

if(j>T.length-1)

return (i-T.length);

else

return 0;
}

void find(SString keys)//
查找单词

{

status StrAssign(SString &T,char *chars);

int count=0;

SString T;

HString text;

int i=1,j=0;

FILE *fp;

if(!(fp=fopen("1.txt","r")))

{

printf("Open file error!\n");

exit(0);

}

get_next(keys,next);

while(!feof(fp))

{

Java封装好了很多对串的处理方法,直接用就可以了。你的C语言代码不全而且有排版不好,我就不细看了。大概给你讲一下Java里关于串的处理:
1、如果是像C语言一样用char数组对串本身进行处理的话,推荐以下方法:
(1)Java的String类与char[]之间的转换:
String a = "This is a string.";

char[] b = a.toCharArray(); // 将一个String类型转成char数组

char[] c = {'a', 'b', 'c'};

String d = new String(c); // 将char数组转成String类

char t = d.charAt(2); // 对应位置的字符

相信数组你总是会操作的。另外Java还有一点更方便的是你不需要像C语言一样每次都将客串的长度附到参数中,因为Java的数组是可以用数组名.length的方法来获得长度的,而String类也一样可以用instance.length()的方法来获得字符串的长度
(2)Java中String类封装的方法有很多,比如contains方法,compareTo方法(承接了Comparable接口),甚至toLowerCase()等方法。其实很多都不需要自己写。

(3)Java中专门对于字符串的处理也可以借助两个类:StringBuilder / StringBuffer,其实这两个比较像,比较大的不同是StringBuffer支持同步(synchronize)。
(4)最后关于文件流。如果是文本输入输出流只需要借助基础的Scanner和PrintWriter类就可以了。这跟C(FILE结构体),C++(fstream类)不太一样的是Java借助Exception来对文件是否存在,是否可读写等问题来进行操作(其实C++也有,但是C++更简单的方法就是直接判断是否是空的流)。当前文件如果存在读写问题一率会返回一个“异常”(IOException),只需对异常进行处理就好了。
try{
Scanner sc = new Scanner("InputFilePath");

while(sc.hasNext()){
System.out.println(sc.next());

}

sc.close();

}

catch(IOException e){
// 异常处理

}

嗯,有问题再探讨吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-19
建议直接搜一个Java版本的串结构,这样更方便一点。追问

如果能找到的话 我就不用转了啊

相似回答