实验要求:
1、定义两个字符指针,通过gets()函数输入两个字符串。
2、定义一个函数char *reverse(char *str),通过指针移动方式将字符串反转。
3、定义一个函数char *link(char *str1,char *str2),通过指针移动方式将两个字符串连接起来。
4、从主函数中分别调用上述两个函数,输入字符串并打印输出结果。
注意:puts(s)函数的作用与printf("%s\n", s)相同。puts()函数具有自动换行的功能。
gets(s)函数与scanf("%s", &s)相似, 但不完全相同。
使用scanf("%s", &s)函数输入字符串时存在一个问题, 就是如果输入了空格会认为输入字符串结束,空格后的字符将作为下一个输入项处理。
但gets() 函数将接收输入的整个字符串直到回车为止。
源程序:
#include<stdio.h>
char *reverse(char *str);
char *link(char *str1,char *str2);
int main()
{
char str[50],str1[50],str2[50];
printf("Input Reversing Character String:");
gets(str);
reverse(str);
printf("output reversed character string:");
puts(str);
printf("input string1:");
gets(str1);
printf("input string2:");
gets(str2);
link(str1,str2);
puts(str1);
return 0;
}
char *reverse(char *str)
{
char *p,*q,temp;
p=str,q=str;
while(*p!='\0')//判断是否到达最后一个字符
p++;
p--;
while(q<p)
{
temp=*q;*q=*p;*p=temp;
p--;//指针相向移动
q++;
}
return str;
}
char *link(char *str1,char *str2)
{
char *p=str1;
while(*p!='\0')
p++;
while(*str2!='\0')//将p和str2连起来
{
*p=*str2;
p++;
str2++;
}
*p='\0';//结束标志
return str1;
}
运行结果: