读书人

为什么这个程序运行输入数据就会出错

发布时间: 2012-02-17 17:50:42 作者: rapoo

为什么这个程序运行输入数据就会出错,强制性地退出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,没实验一下,你自己试试

读书人网 >C语言

热点推荐