代码:
#include <stdio.h>
#include <string.h>
#define N 20
int main() {
void avert(char str[]);
char str[N];
printf("请输入字符串:\n");
//scanf("%s",str);以空格断
gets(str);
avert(str);
printf("字符串反序结果为:\n");
puts(str);
return 0;
}
void avert(char str[]) {
char temp;
int i,j;
int len=strlen(str);
// printf("%d\n",len);
for(i=0,j=len-1; i<len/2; i++,j--) {
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
运行结果:
scanf和puts区别:
- gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束。
- scanf把末尾回车符保留在缓存中。gets接收回车,但把末尾回车符替换为\0。
- 返回值不同,gets的返回值为char*型,当读入成功时会返回输入的字符串指针地址,出错时返回NULL;scanf返回值为int型,返回实际成功赋值的变量个数,当遇到文件结尾标识时返回EOF。
- gets函数仅用于读入字符串;scanf为格式化输出函数,可以读入任意C语言基础类型的变量。