首先感谢各位大神的指点,没有你们的帮助,我这个菜鸟还在低智商的错误中无法自拔呢呵呵。
代码:
#include <stdio.h>
#include <string.h>
#define MAX 1000
int reverse(char str1[], char str2[]); //定义翻转字符串的函数
int input(char string1[]); //定义字符串输入函数
int main()
{
char string1[MAX];
char string2[MAX];
input(string1); //将键盘输入的字符赋值给字符串
printf("The string is %s, it has %d characters \n",string1, strlen(string1)); //测试输入的正确性
reverse(string1, string2);//翻转字符串
printf("The reversed string is %s, it has %d characters\n",string2, strlen(string2)); //打印翻转后的结果
}
int input(char string1[]) //输入字符到字符串中的子程序
{
int i;
char c;
for (i = 0; i <= (MAX - 2) && (c = getchar())!= EOF && c != '\n'; i++){
string1[i] = c; //依次给字符串每一位赋值
}
if (c == '\n') //如果输入回车
string1[i] = '\0'; //将回车用结束符号代替,因为这个程序中回车在字符串里是没有必要存在的,颠倒次序的时候会添加麻烦
return 0;
}
int reverse(char str1[], char str2[]) //翻转字符串的子程序
{
int i;
for (i = strlen(str1) - 1; i >= 0; i--){
str2[strlen(str1) - 1 - i] = str1[i];
}
str2[strlen(str2) ] = '\0'; //给字符串2加上结束标志
return 0;
}