你把原题贴出来
DO IT YOURSELF !
#include<stdio.h> #include<stdlib.h> #define MAXSIZE 256 //定义串允许的最大字符个数 typedef struct { char string[MAXSIZE]; //MAXSIZE为串的最大长度 int len; //串的实际长度 }SSTRING; //串的顺序存储结构表示 int str_len(SSTRING *s) //串的长度计算函数 { ; } void str_input(SSTRING *s) //串的输入函数 { int i=0; char ch; s->len=0; while((ch=getchar())!='\n') //通过循环,从键盘输入一串字符串 { s->string[i]=ch; i++; s->len++; } s->string[i]='\0'; } SSTRING *str_rep(SSTRING *s1,SSTRING *s2,int pos) { //将字符串S1从pos位置处替换S2串 int i=0,j; for(j=pos-1;s1->string[j]!='\0';j++) //从替换的起始位置开始 if(s2->string[i]!='\0') { ; //进行替换 i++; } else { break; } return s1; } SSTRING *str_con(SSTRING *s1,SSTRING *s2) { //将字符串S2连接到S1串的后面,两个串合并成一个串,放到S1串中 int i=s1->len,j=0,k; for(k=0;k<str_len(s2);k++) { ; ; ;// 通过循环,将S2串的元素逐一复制到S1串的后面, ;// 合并成一个串。 } s1->string[i]='\0'; return s1; } SSTRING *str_sub(SSTRING *sub,SSTRING *s,int pos,int len) {//将串S第pos个字符开始的长度为len的字符序列复制到串sub中 int i=pos-1,j=0,k; for(k=1;k<=len;k++) { ;//逐一取出S串中从pos开始的元素,并复制到sub串中 ;//每复制完一个元素,sub串长度加1。 i++; j++; } sub->string[j]='\0'; return sub; } void str_print(SSTRING *s) {//字符串输出显示 int i; for(i=0;i<s->len;i++) ;//依次将串中的字符逐一输出到屏幕显示。 printf("\n"); } void showmenu() { //显示菜单 printf(" 欢迎使用串操作小软件\n"); printf("\t1、求串的长度\n"); printf("\t2、串的替换\n"); printf("\t3、串的连接\n"); printf("\t4、求子串\n"); printf("\t5、退出程序\n"); } void main() { int position,length,no; SSTRING str,str1,str2; str.len=0; str1.len=0,str2.len=0; while(1) { showmenu(); printf(" 请输入你的选择:"); scanf("%d",&no); switch(no) { case 1:printf("请输入一串字符:"); fflush(stdin); str_input(&str); length=str_len(&str); printf("字符串:%s的长度为%d\n",str.string,length); system("pause"); system("cls"); break; case 2:printf("请输入源字符串:"); fflush(stdin); str_input(&str1); printf("请输入替换字符串:"); fflush(stdin); str_input(&str2); printf("请输入替换位置:"); scanf("%d",&position); str_rep(&str1,&str2,position); printf("替换后的结果为:"); str_print(&str1); system("pause"); system("cls"); break; case 3:printf("请输入第一串字符:"); fflush(stdin); str_input(&str1); printf("请输入第二串字符串:"); fflush(stdin); str_input(&str2); str_con(&str1,&str2); printf("两串字符连接后的结果为:"); str_print(&str1); system("pause"); system("cls"); break; case 4:printf("请输入一串字符:"); fflush(stdin); str_input(&str1); printf("请输入取子串的位置和长度:"); scanf("%d%d",&position,&length); str_sub(&str,&str1,position,length); printf("子串为:"); puts(str.string); system("pause"); system("cls"); break; case 5: return; } } }
#include<stdio.h> #include<stdlib.h> #define MAXSIZE 256 //定义串允许的最大字符个数 typedef struct { char string[MAXSIZE]; //MAXSIZE为串的最大长度 int len; //串的实际长度 }SSTRING; //串的顺序存储结构表示 int str_len(SSTRING *s) //串的长度计算函数 { int t=0; //我添加的代码 while(s->string[t]!='\0') // { // t++; // } // return t; //我添加的代码结束 } void str_input(SSTRING *s) //串的输入函数 { int i=0; char ch; s->len=0; while((ch=getchar())!='\n') //通过循环,从键盘输入一串字符串 { s->string[i]=ch; i++; s->len++; } s->string[i]='\0'; } SSTRING *str_rep(SSTRING *s1,SSTRING *s2,int pos) { //将字符串S1从pos位置处替换S2串 int i=0,j; for(j=pos-1;s1->string[j]!='\0';j++) //从替换的起始位置开始 if(s2->string[i]!='\0') { ; //进行替换 i++; } else { break; } return s1; } SSTRING *str_con(SSTRING *s1,SSTRING *s2) { //将字符串S2连接到S1串的后面,两个串合并成一个串,放到S1串中 int i=str_len(s1),j=0,k; //我这里改动一处 for(k=0;k<str_len(s2);k++) { s1->string[i+k]=s2->string[k]; //我添加的代码 ; ; ;// 通过循环,将S2串的元素逐一复制到S1串的后面, ;// 合并成一个串。 } s1->string[i+k]='\0'; //这里我改动了 return s1; } SSTRING *str_sub(SSTRING *sub,SSTRING *s,int pos,int len) {//将串S第pos个字符开始的长度为len的字符序列复制到串sub中 int i=pos-1,j=0,k; for(k=1;k<=len;k++) { sub->string[j]=s->string[i]; //我添加的代码 //逐一取出S串中从pos开始的元素,并复制到sub串中 ;//每复制完一个元素,sub串长度加1。 i++; j++; } sub->string[j]='\0'; return sub; } void str_print(SSTRING *s) {//字符串输出显示 int i; for(i=0;i<str_len(s);i++) printf("%c",s->string[i]); //我添加的代码 ;//依次将串中的字符逐一输出到屏幕显示。 printf("\n"); } void showmenu() { //显示菜单 printf(" 欢迎使用串操作小软件\n"); printf("\t1、求串的长度\n"); printf("\t2、串的替换\n"); printf("\t3、串的连接\n"); printf("\t4、求子串\n"); printf("\t5、退出程序\n"); } void main() { int position,length,no; SSTRING str,str1,str2; str.len=0; str1.len=0,str2.len=0; while(1) { showmenu(); printf(" 请输入你的选择:"); scanf("%d",&no); switch(no) { case 1:printf("请输入一串字符:"); fflush(stdin); str_input(&str); length=str_len(&str); printf("字符串:%s的长度为%d\n",str.string,length); system("pause"); system("cls"); break; case 2:printf("请输入源字符串:"); fflush(stdin); str_input(&str1); printf("请输入替换字符串:"); fflush(stdin); str_input(&str2); printf("请输入替换位置:"); scanf("%d",&position); str_rep(&str1,&str2,position); printf("替换后的结果为:"); str_print(&str1); system("pause"); system("cls"); break; case 3:printf("请输入第一串字符:"); fflush(stdin); str_input(&str1); printf("请输入第二串字符串:"); fflush(stdin); str_input(&str2); str_con(&str1,&str2); printf("两串字符连接后的结果为:"); str_print(&str1); system("pause"); system("cls"); break; case 4:printf("请输入一串字符:"); fflush(stdin); str_input(&str1); printf("请输入取子串的位置和长度:"); scanf("%d%d",&position,&length); str_sub(&str,&str1,position,length); printf("子串为:"); puts(str.string); system("pause"); system("cls"); break; case 5: return; } } }