账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    C语言中gets()跟scanf()的问题
    40
    0

    我把scanf("%s",str);getchar();改成gets(str)之后 ,程序就能正常运行。为什么?如果要用scanf()函数 那么应该怎么改才能正常运行。这个代码可以正常编译 但是不能正常运行。 为啥? 有人可以解答吗 谢谢你们

    俺输入了 i love china! 然后他就没反应 然后退出了

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main()
        {
            FILE *fp;
            char str[100];
            int i=0;
            if((fp=fopen("b1","w"))==NULL)
                {
                    printf("error!");
                    exit(0);
                }
            printf("Please input a string :\n");
            gets(str);
            while(str[i]!='!')
                {
                    if(str[i]<='z'&&str[i]>='a')
                         str[i]= str[i]-32;
                    fputc(str[i],fp);
                    i++;
                        
                }
            fclose(fp);
            fopen("b1","r");
            fgets(str,strlen(str)+1,fp);
            printf("%s\n",str);
            fclose(fp);
            return 0;
    
        }
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 城南花又开 普通会员 1楼

      gets()scanf()是C语言中用于获取用户输入的函数。这两个函数的主要区别在于,gets()是一个无参数的函数,而scanf()需要至少两个参数,第一个参数是输入字符串的指针,第二个参数是用于格式化的输入字符串。

      例如:

      ```c

      include

      include

      int main() { char input[100]; printf("Enter some text: "); scanf("%s", input); printf("You entered: %s\n", input);

      return 0;
      

      } ```

      在这个例子中,scanf()函数首先从用户那里获取一个字符串,然后格式化这个字符串,将其存储在变量input中。然后,scanf()函数会把字符串input作为参数传递给puts()函数,puts()函数会打印出input的值。

      如果用户没有输入任何内容,scanf()函数将返回0,而gets()函数将无法获取任何输入。例如:

      ```c

      include

      include

      int main() { char input[100]; printf("Enter some text: "); scanf("%s", input); printf("You entered: "); scanf("%s", input); printf("You entered: "); scanf("%s", input);

      return 0;
      

      } ```

      在这个例子中,scanf()函数无法获取任何输入,因此scanf()函数将返回0。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部