|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
用顺序存储结构解决串的赋值和输出问题
已写部分代码,求帮忙看看哪错了
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #define OK 1
- #define ERROR 0
- #define MAXSTRLEN 255
- typedef unsigned char sstring[MAXSTRLEN + 1];
- typedef int status;
- status strassign(sstring &s,char *char1)
- {
- int i;
- if (strlen(char1) > MAXSTRLEN) return ERROR;
- s[0]=strlen(char1);
- for(i=1;i<=s[0];i++){
- s[i]=*(char1+i-1);
- return OK;
- }
- }
- void strprint(sstring s)
- {
- int i;
- for(i=1;i<=s[0];i++){
- printf("%c",s[i]);
- }
- printf("\n");
- }
- int main()
- {
- char *char1="rgh",*char2="asdefrghyr";
- sstring s,t;
- printf("%s\n",char1);
- strassign(s,char1);
- strassign(t,char2);
- strprint(s);
- strprint(t);
- }
复制代码
代码中有两个问题:
1. 在函数 strassign 中, return OK 语句放在了循环内部,导致循环只会执行一次就返回。应该将 return OK 语句放在循环外部。
2. 在函数 strassign 中,应该将字符串的长度赋值给 s[0] ,而不是将字符串的长度赋值给 s[0]+1 。因此,应该将 s[0]=strlen(char1) 改为 s[0]=strlen(char1)+1 。
以下是修改后的代码:
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define OK 1
- #define ERROR 0
- #define MAXSTRLEN 255
- typedef unsigned char sstring[MAXSTRLEN + 1];
- typedef int status;
- status strassign(sstring &s, char *char1)
- {
- int i;
- if (strlen(char1) > MAXSTRLEN)
- return ERROR;
- s[0] = strlen(char1) + 1;
- for (i = 1; i <= s[0]; i++)
- {
- s[ i] = *(char1 + i - 1);
- }
- return OK;
- }
- void strprint(sstring s)
- {
- int i;
- for (i = 1; i <= s[0]; i++)
- {
- printf("%c", s[ i]);
- }
- printf("\n");
- }
- int main()
- {
- char *char1 = "rgh", *char2 = "asdefrghyr";
- sstring s, t;
- printf("%s\n", char1);
- strassign(s, char1);
- strassign(t, char2);
- strprint(s);
- strprint(t);
- return 0;
- }
复制代码
希望能帮到你!
|
|