C语言求助: 为什么我用gets不行, 用scanf却通过了

P5705 【深基2.例7】数字反转

alBeLine @ 2021-11-14 10:25:58

自己运行时, 用gets和scanf结果都符合, 但是上交代码的时候gets却是错的!

#include <stdio.h>
#include <string.h>

int main(){
    char str[100];
    int len;

    gets(str);
    len = strlen(str);
    for(int i = len-1;i >= 0;i--){
        printf("%c", str[i]);
    }

    return 0;
}

by liuzimingc @ 2021-11-14 10:29:53

换行符的问题。

改成

#include <stdio.h>
#include <string.h>

int main(){
    char str[100];
    int len;

    gets(str);
    len = strlen(str);
    for(int i = len-2;i >= 0;i--){
        printf("%c", str[i]);
    }

    return 0;
}

就可以了。


by alBeLine @ 2021-11-14 10:34:57

@liuzimingc 谢谢, 问题解决了


by liuzimingc @ 2021-11-14 10:38:04

@alBeLine 建议不要用 gets。


by alBeLine @ 2021-11-14 10:44:31

@liuzimingc 好的, 能告知一下gets应该什么使用比较好吗, 我还以为换行符是储存在缓冲区的, 哈哈


by liuzimingc @ 2021-11-14 10:50:54

@alBeLine 实在要用就用 fgets。scanf 足够了


by rzh123 @ 2021-11-14 12:04:01

能告知一下gets应该什么使用比较好吗

什么时候也不要用


|