您的位置:首页 > 编程语言 > C语言/C++

C语言:scanf("%s",a)和gets(a)的区别(a[i]是字符串数组)

2016-12-23 12:18 405 查看
字符串逆向输出

Problem Description

不断从键盘输入字符串,然后将它反向输出。

Input

输入数据有多组,每组一行字符串,长度不超过100。

Output

输出逆向后的字符串。

Sample Input

abcd

www.mnnu.edu.cn

Sample Output

dcba

nc.ude.unnm.www

Author

wtf

Recommend

wtf

看完题目,新手小白都会觉得很简单,第一感想就是直接应用scanf("%s",a)或gets(a)。但是请读者认真想想,难道两种都可以用吗??

请思考3秒钟!!!一定要思考哦!

。。。。。。

。。。。。。

。。。。。。

。。。。。。

(最简单的字符倒序!但是主要请小白记住上面写的两种区别!!!)

下面给出步骤:

#include <stdio.h>

#include <string.h>       //这个也是头文件。。。。。

int main()

{
int i, j, k, l, m, n;
char a[1001];
while (gets(a))             //为什么不用scanf("%s",a[i]);
{
n = strlen(a);
for (i = n - 1; i >= 0; i--)
{
//想想为什么从n-1开始?因为字符数组第n项是'\0';

printf("%c", a[i]);

}

printf("\n");

}

return 0;
}

想想看,给出的例子中,没有说明字符串中是否有空格,如果是scanf("%s",a);的话,遇到空格就停止读空格之后的字符串了。

是这样吧?很简单的一提,大家平时都可以想到,就先写到这一章了。12.30号,以后每天至少一更,就发发自己的学习感悟。

不喜勿喷!!

有不懂C基础问题,可以私我qq:927616151。也可以一起讨论问题,欢迎大家哦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: