C语言程序代码问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 15:11:25
/*输入一字符串str,再输入两个整数start与len,截取str字符串从start位置开始,截取len个字符存放到另外一个字符串dest中*/

#include <stdio.h>
#include <string.h>
#define N 100
int main()
{
char str[N];
char dest[N];
int start,i,k,len;
printf("please input words");
scanf("%s",str);
printf("input you want get start and end location");
scanf("%d%d",&start,len);
k=strlen(str);
printf("%d",k);

for(i=start;i<=len;i++)

{
dest[start-i]=str[i];

}
printf("%s",dest);

return 0;
}

运行出现段错误,我这里是不是有语法错误,还是哪里类型不匹配,还是算法算了,请帮我指出来,谢谢

第一:
scanf("%d%d",&start,len);
缺少一个取地址符,改成scanf("%d%d",&start,&len);
第二:
for(i=start;i<=len;i++)

{
dest[start-i]=str[i];

}
这个语句有问题,首先应该是i-start,其次dest结束后需要用\0代表结束,否则会输出一堆乱码。
第三:
输出时,最好加上\n,这样看起来比较清楚一点

修改后的代码:
#include <stdio.h>
#include <string.h>
#define N 100
int main()
{
char str[N];
char dest[N];
int start,i,k,len;
printf("please input words\n");
scanf("%s",str);
printf("input you want get start and end location\n");
scanf("%d%d",&start,&len);
k=strlen(str);
printf("%d\n",k);

for(i=start;i<=len;i++)

{
dest[i-start]=str[i];

}
dest[i-start]='\0';
printf("%s\n",dest);

return 0;
}