初学者帖,寻大神解释程序运行的毛病
菜鸟求助帖,寻大神解释程序运行的毛病
//对一个长度为n的字符串从其第k个字符起,删去m个字符,组成长度为n-m新字符串,并输出处理后的字符串。用自定义函数实现。
#include <stdio.h>
#include <stdlib.h>
char *fact(int n,int m,int k,char *str1,char *str2);
int main()
{
int n,m,k,i;
char *str1,*str2;
printf("请输入长度n:\n");
scanf("%d",&n);
str1=(char*)malloc(n*sizeof(char));
printf("请输入删去字符的个数m:\n");
scanf("%d",&m);
str2=(char*)malloc((n-m)*sizeof(char));
printf("请输入开始删除的字符个数:\n");
scanf("%d",&k);
printf("请输入长度为%d的字符串:\n",n);
for(i=0;i<n;i++)
{
scanf("%c",str1+i);
}
str2=fact(n,m,k,str1,str2);
printf("处理后的字符串为:%s\n",str2);
return 0;
}
char *fact(int n,int m,int k,char *str1,char *str2)
{
int i;
for(i=0;i<k;i++)
{
*(str2+i)=*(str1+i);
}
for(i=0;i<m;i++)
{
*(str2+k+i)=*(str1+k+m+i);
}
*(str2+k+i)='\0';
return str2;
}
用VC6.0运行之后最后一位总带个?,可能存在的问题不止一处,望大神指点。
------解决思路----------------------

------解决思路----------------------
还得确保你的输入是合法的
//对一个长度为n的字符串从其第k个字符起,删去m个字符,组成长度为n-m新字符串,并输出处理后的字符串。用自定义函数实现。
#include <stdio.h>
#include <stdlib.h>
char *fact(int n,int m,int k,char *str1,char *str2);
int main()
{
int n,m,k,i;
char *str1,*str2;
printf("请输入长度n:\n");
scanf("%d",&n);
str1=(char*)malloc(n*sizeof(char));
printf("请输入删去字符的个数m:\n");
scanf("%d",&m);
str2=(char*)malloc((n-m)*sizeof(char));
printf("请输入开始删除的字符个数:\n");
scanf("%d",&k);
printf("请输入长度为%d的字符串:\n",n);
for(i=0;i<n;i++)
{
scanf("%c",str1+i);
}
str2=fact(n,m,k,str1,str2);
printf("处理后的字符串为:%s\n",str2);
return 0;
}
char *fact(int n,int m,int k,char *str1,char *str2)
{
int i;
for(i=0;i<k;i++)
{
*(str2+i)=*(str1+i);
}
for(i=0;i<m;i++)
{
*(str2+k+i)=*(str1+k+m+i);
}
*(str2+k+i)='\0';
return str2;
}
用VC6.0运行之后最后一位总带个?,可能存在的问题不止一处,望大神指点。
------解决思路----------------------
/**************************************
*FILE :D:\c\main.c
*PROJECT :NULL
*AUTHOR :707wk
*CREATED :2015-5-14 下午 10:18:01
*TEXT :对一个长度为n的字符串从其第k个字符起,删去m个字符并输出
*EMAIL :gtsoft_wk@foxmail.com
*CODE :https://github.com/707wk
***************************************/
#include <stdio.h>
void strcatstr(char* str1,char *str2)
{
while(*str1)str1++;
while(*str1++=*str2++);
}
int main()
{
int start;
int end;
char str[100];
printf("请输入字符串:\n");
scanf("%s",str);
printf("请输入开始删除的字符位置:");
scanf("%d",&start);
printf("请输入删去字符的个数:");
scanf("%d",&end);
str[start-1]='\0';
strcatstr(str,str+start+end-1);
printf("处理后的字符串为:%s\n",str);
return 0 ;
}
------解决思路----------------------
还得确保你的输入是合法的