为什么我的substr不对??
# 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;
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);
}
int comparestr(HString *str1,HString *str2)
{
int i;
for(i=0;i<str1->length&&i<str2->length;i++)
{
if(str1->ch!=str2->ch)
{
printf("两者相差%d\n",str1->ch-str2->ch);
return 1;
}
else
{
printf("两者相等。\n");
return 0;
}
}
}
void copystr(HString *str1,HString *str2)
{
int i=0;
while(i<=str2->length)
{
str1->ch=str2->ch;
i++;
}
}
void concatstr(HString *str1,HString *str2)
{
int i,j;
i=0;
j=str1->length;
while(i<=str2->length)
{
str1->ch=str2->ch;
i++;
j++;
}
printf("字符串连接成功.\n");
}
int lenstr(HString *str)
{
int i=0,len=0;
while(str->ch!='\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=str->ch;
}
strsub->ch='\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;
} 错误提示? BngThea 发表于 2018-4-16 10:20
错误提示?
没有错误提示,可以执行一下,然后直接跳出程序 愿你 发表于 2018-4-16 10:26
没有错误提示,可以执行一下,然后直接跳出程序
那你怎么知道你的不对? BngThea 发表于 2018-4-16 11:01
那你怎么知道你的不对?
因为没执行完就退出来了啊 愿你 发表于 2018-4-16 11:49
因为没执行完就退出来了啊
那你就设置断点追踪一下,看执行到哪一步跳出来的 BngThea 发表于 2018-4-16 11:51
那你就设置断点追踪一下,看执行到哪一步跳出来的
我现在就在学怎么调试...
有点难{:10_277:}
页:
[1]