为什么这个程序运行输入数据就会出错,强制性地退出Turbo C(55555,哪位高手能告诉小弟我有关问题出在哪里呀?)
为什么这个程序运行输入数据就会出错,强制性地退出Turbo C(55555,谁能告诉我问题出在哪里呀?)
题目:用指定字符串s1置换字符串s2中从第n个开始往后的串。(用指针参数实现)。
#include "stdio.h "
#include "string.h "
#include "alloc.h "
char sstring(char *s1,char *s2,int n)
{int i=0,j=n;
while (s1+i)
{*(s2+j)=*(s1+j);i++;j++;}
}
void main()
{char *s1,*s2,str1[20],str2[20];
{char (*pf)();
int n;
scanf( "%d ",&n);
gets(str1);
gets(str2);
s1=(char *)malloc(strlen(str1)+1);
s2=(char *)malloc(strlen(str2)+1);
strcpy(s1,str1);
strcpy(s2,str2);
pf=sstring;
(*pf)(s1,s2,n);
puts(s2);
}
------解决方案--------------------
1
char sstring(char *s1,char *s2,int n)必须返回值
2
定义的函数指针应该是:
char (*pf)(char *, char *,int);
这样才能和参数匹配
------解决方案--------------------
晕,不知所云,干吗要搞得那么复杂。。。
#include <stdio.h>
#include <string.h>
char *sstring(char *s1,char *s2,int n)
{
int i=0,j=n;
char *ptr = s2;
while (s1[i])
{
*(s2+j)=*(s1+i);
i++;
j++;
}
*(s2+j) = '\0 ';
return ptr;
}
void main()
{
char str1[20],str2[20];
char *pf;
int n;
scanf( "%d ", &n);
fflush(stdin);
gets(str1);
gets(str2);
pf=sstring(str1, str2, n);
puts(pf);
}
------解决方案--------------------
是不是要求用指针函数?
------解决方案--------------------
是不是只要输入完n后,就关了,你在scanf( "%d ",&n);后面加个getchar();试试
没装TC,没实验一下,你自己试试
题目:用指定字符串s1置换字符串s2中从第n个开始往后的串。(用指针参数实现)。
#include "stdio.h "
#include "string.h "
#include "alloc.h "
char sstring(char *s1,char *s2,int n)
{int i=0,j=n;
while (s1+i)
{*(s2+j)=*(s1+j);i++;j++;}
}
void main()
{char *s1,*s2,str1[20],str2[20];
{char (*pf)();
int n;
scanf( "%d ",&n);
gets(str1);
gets(str2);
s1=(char *)malloc(strlen(str1)+1);
s2=(char *)malloc(strlen(str2)+1);
strcpy(s1,str1);
strcpy(s2,str2);
pf=sstring;
(*pf)(s1,s2,n);
puts(s2);
}
------解决方案--------------------
1
char sstring(char *s1,char *s2,int n)必须返回值
2
定义的函数指针应该是:
char (*pf)(char *, char *,int);
这样才能和参数匹配
------解决方案--------------------
晕,不知所云,干吗要搞得那么复杂。。。
#include <stdio.h>
#include <string.h>
char *sstring(char *s1,char *s2,int n)
{
int i=0,j=n;
char *ptr = s2;
while (s1[i])
{
*(s2+j)=*(s1+i);
i++;
j++;
}
*(s2+j) = '\0 ';
return ptr;
}
void main()
{
char str1[20],str2[20];
char *pf;
int n;
scanf( "%d ", &n);
fflush(stdin);
gets(str1);
gets(str2);
pf=sstring(str1, str2, n);
puts(pf);
}
------解决方案--------------------
是不是要求用指针函数?
------解决方案--------------------
是不是只要输入完n后,就关了,你在scanf( "%d ",&n);后面加个getchar();试试
没装TC,没实验一下,你自己试试