零的执行人 发表于 2020-3-22 16:10:53

scanf("%d\n",&n);的问题

本题要求编写程序,针对输入的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;
        int i;
        char *min=NULL;
        scanf("%d\n",&n);
        char str={0};
        for(i=0;i<n;i++){
                gets(str);
        }
        min=str;
        for(i=1;i<n;i++){
                if(strcmp(min,str)>0){
                        min=str;
                }
               
        }
        printf("Min is: %s",min);
}




为什么scanf("%d\n",&n);改为scanf("%d",&n);结果返回空指针NULL?

qiuyouzhi 发表于 2020-3-22 16:25:59

因为你会输入一个\n啊

Crazyeye 发表于 2020-3-22 19:17:40

scanf会接收你输入完之后的'\n',也就是回车,他也会接收的
页: [1]
查看完整版本: scanf("%d\n",&n);的问题