heatherill
2021-12-09 16:54
采纳率: 80%
浏览 21

为什么gets()和scanf输出不同

原题

找最小的字符串 (15 分)
本题要求编写程序,针对输入的N个字符串,输出其中最小的字符串。

输入格式:
输入第一行给出正整数N;随后N行,每行给出一个长度小于80的非空字符串,其中不会出现换行符,空格,制表符。

输出格式:
在一行中用以下格式输出最小的字符串:

Min is: 最小字符串
输入样例:
5
Li
Wang
Zha
Jin
Xian
结尾无空行
输出样例:
Min is: Jin
结尾无空行

#include <stdio.h>
#include <string.h>
int main()
{
    int N,i;
    char a[80],b[80];
    scanf("%d",&N);
    gets(a);
    for(i=1;i<N;i++)
    {
        gets(b);
        if(strcmp(a,b)>0)
        strcpy(a,b);
    }
    printf("Min is: %s",a);
    return 0;
}


运行结果及报错内容

并没有输入空格,但输入少一行,无法正常输出a
但换成scanf就完全正确了

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题