|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码 |
|