马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
# include <stdio.h>
# include <string.h>
# define MAXSIZE 100
typedef struct{
char *ch;
int length;
}HString;
int initstr(HString *str)
{
str->ch=(char*)(malloc(sizeof(char)*MAXSIZE));
if(!str->ch)
{
printf("存储空间分配失败。\n");
return -1;
}
printf("请给字符串str赋值:");
gets(str->ch);
str->length=strlen(str->ch);
printf("该字符串的长度为:%d\n",str->length);
printf("赋值成功\n");
return 0;
}
/*int initstr(HString *str)
{
char str2[MAXSIZE];
str->ch=(char*)(malloc(sizeof(char)*MAXSIZE));
if(!str->ch)
{
printf("存储空间分配失败。\n");
return -1;
}
printf("请输入字符串str2:");
gets(str2);
strcpy(str->ch,str2);
printf("赋值成功。\n");
return 0;
}*/
/*int initstr(HString *str)
{
char *str2;
str2=(char*)(malloc(sizeof(char)*MAXSIZE));
str->ch=(char*)(malloc(sizeof(char)*MAXSIZE));
if(!str->ch)
{
printf("存储空间分配失败。\n");
return -1;
}
printf("请输入字符串str2:");
gets(str2);
strcpy(str->ch,str2);
printf("赋值成功。\n");
return 0;
}*/
int lengthstr(HString str) //求串长
{
printf("您的字符串长度为%d\n",str.length);
return str.length;
}
void printstr(HString *str) //打印字符串
{
printf("您所需要打印的字符串为:%s\n",str->ch);
//printf("您所需要打印的字符为:%s\n",str->ch+2);
//printf("您所需要打印的字符为:%s\n",&str->ch[i]);
}
int comparestr(HString *str1,HString *str2)
{
int i;
for(i=0;i<str1->length&&i<str2->length;i++)
{
if(str1->ch[i]!=str2->ch[i])
{
printf("两者相差%d\n",str1->ch[i]-str2->ch[i]);
return 1;
}
else
{
printf("两者相等。\n");
return 0;
}
}
}
void copystr(HString *str1,HString *str2)
{
int i=0;
while(i<=str2->length)
{
str1->ch[i]=str2->ch[i];
i++;
}
}
void concatstr(HString *str1,HString *str2)
{
int i,j;
i=0;
j=str1->length;
while(i<=str2->length)
{
str1->ch[j]=str2->ch[i];
i++;
j++;
}
printf("字符串连接成功.\n");
}
int lenstr(HString *str)
{
int i=0,len=0;
while(str->ch[i]!='\0')
{
len++;
i++;
}
printf("该字符串的长度为%d\n",len);
return 0;
}
void substr(HString *str)
{
int pos,len,i,j;
HString *strsub;
printf("请输入寻找子串的起始位置:");
scanf("%d",&pos);
printf("请输入寻找子串的长度:");
scanf("%d",&len);
if(pos<1||pos>str->length||len>=str->length)
printf("data error!");
else
{
for(i=pos;i<pos+len;i++)
{
strsub->ch[i-pos]=str->ch[i];
}
strsub->ch[i]='\0';
strsub->length=len;
printf("您所需要查询的子串为:%s",strsub->ch);
}
}
int main()
{
HString str1,str2;
initstr(&str1);
//initstr(&str2);
//comparestr(&str1,&str2);
//copystr(&str1,&str2);
//lengthstr(str1);
//concatstr(&str1,&str2);
lenstr(&str1);
substr(&str1);
printstr(&str1);
return 0;
}
|