我们在输入字符串时就要考虑一个问题,由于C语言是没有字符串类型的,所以我们首先肯定要有一个字符串数组来存放我们输入的字符串
再然后一个问题是,如何输入一个包含空格的字符串
这里如果我们直接使用scanf
int main()
{
char ch[100] = { '\0' };
scanf("%s", ch);
printf("%s", ch);
return 0;
}
这里输出的结果就会很尴尬,因为scanf函数在从输入缓冲区内读取字符时,如果遇到空格,那么就会将其当成多组输入进行读取,所以我们这里就不能使用scanf函数
接下来我们来看一下gets()函数
# include <stdio.h>
char *gets(char *str);
gets() 函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量 str 所指向的内存空间。str 可以是一个字符指针变量名,也可以是一个字符数组名。
关于使用 gets() 函数需要注意:使用 gets() 时,系统会将最后“敲”的换行符从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符.
gets()用于从标准输入流stdin读入一个整行(以'\n'或EOF)结束。
所以我们就要将scanf()替换成gtes()
然后下个问题就是将字符数组的内容进行逆序了,这个还是很简单,我们利用二分查找的思想,给定一个左下标和右下标,通过临时变量和下标对数组内容进行一个替换就好了,关于这部分的详解请看http://t.csdn.cn/VmjYo
接下直接给出代码
#include <stdio.h>
#include <string.h>
int main()
{
char ch[1000] = {'\0'};
gets(ch);
int len = strlen(ch);
int left = 0;
int right = len - 1;
//交换数组内容
while (left <= right)
{
char m = ch[left];
ch[left] = ch[right];
ch[right] = m;
left++;
right--;
}
printf("%s", ch);
return 0;
}
欢迎点赞留言