zoukankan      html  css  js  c++  java
  • 关于字符串输入的问题

    今天在做一个关于字符串的程序的时候,出现了一个问题,用scanf函数无法接受一个含空格的字符串,于是自己就找了一下网上的资料,自己在整理了下。

    scanf函数可以接受一个字符串,但是遇到空格或者换行它就会结束输入,无法在字符串中加入空格,而gets函数可以接受空格到字符串中,两个函数都会在输入结束后加上‘’。

    本来以为用gets函数就好了,但是又遇到了新的问题,调试的时候遇到了警告: the `gets' function is dangerous and should not be used.(系统是ubuntu,用gcc调试),

    这个警告意思是说gets函数是危险的,不应该被使用。解决的方法是使用fgets函数,fgets(char*,int size,stdin),其中stdin表示标准输入,意思就是从键盘上接受输入的字符,

    这个函数控制了接受字符的大小,从而避免了接收的一个过大字符串到数组的问题,看下代码和运行结果吧。

     1 int main()
     2 {
     3     char str1[10];
     4     char str2[10];
     5     fgets(str1,10,stdin);            //使用fgets接受含空格的字符串
     6     scanf("%s",str2);            //scanf无法接收
     7 //    gets(str);                //会有警告出现
     8     printf("str1=%s",str1);
     9     printf("str2=%s
    ",str2);
    10     return 0;
    11 }
    123 456
    123 456
    str1=123 456
    str2=123

    输入的两个里面都含有空格,但是只有str1能接收到,即用fgets函数。

  • 相关阅读:
    细细审视的你代码:异步消息处理
    [C++] 加速make的编译
    分析一下12306网站
    [Linux] 通过shell给unix socket发送数据
    shell中如何设置自增的变量
    多系统的 启动 顺序 修改
    对apk包进行odex优化的目的
    Android之所以不需要关闭后台运行程序 的 理由
    shell中如何设置自增的变量
    eclipse 小结
  • 原文地址:https://www.cnblogs.com/kingos/p/4524874.html
Copyright © 2011-2022 走看看