c/c++语言开发共享如何在C中读取包含空格的字符串?

scanf(“%s”,str)不会这样做。 它会在第一个空间停止阅读。 当字符串很大时,gets(str)也不起作用。 有任何想法吗?

    使用带有STDIN的fgets作为文件流。 然后,您可以指定要读取的数据量以及放置位置。

     char str[100]; 

    试试这个

      scanf("%[^n]s",str); 

    或这个

     fgets(str, sizeof str, stdin)) 

    创建自己的函数来读取一行。 这是你基本上要做的事情:

      fgets分配(可增长)内存 如果它是一个完整的线你就完成了  3.种植arrays  4.在新分配的内存中添加更多字符  5.转到2。 

    实施可能有点棘手:-)

    您需要考虑需要传递给函数的内容(至少是数组的地址及其大小); 当一切“正常”或出现错误时,函数返回什么。 您需要确定什么是错误(字符串长度为10Gbytes,没有’ n’错误?)。 您需要决定如何增长arrays。


    编辑

    实际上fgetc而不是fgets可能更好

     得到一个角色 它EOF?  DONE 添加到数组(更新长度),可能增长(更新大小) 是吗? n?  DONE 重复 

    你什么时候想停止阅读? 在EOF,在一个特定的角色,或什么?

    您可以使用%c读取特定数量的字符

    c匹配一系列宽度计数字符(默认值为1); 下一个指针必须是指向char的指针,并且必须有足够的空间容纳所有字符(不添加终止NUL)。 通常跳过前导空格被抑制。 要首先跳过空白区域,请使用格式中的显式空格。

    你可以用%[读取特定字符(或最多被排除的字符)

    [匹配指定的一组接受字符中的非空字符序列; 下一个指针必须是指向char的指针,并且字符串中的所有字符必须有足够的空间,以及终止NUL字符。 通常跳过前导空格被抑制。 该字符串由特定集合中的字符组成(或不在其中); 该集合由开括号[字符和近括号]字符之间的字符定义。 如果开括号之后的第一个字符是旋音^,则该集合将排除这些字符。 要在组中包含一个近括号,请将其作为开括号或旋转后的第一个字符; 任何其他位置将结束该集。 连字符 – 也很特别; 当放置在两个其他字符之间时,它会将所有插入字符添加到集合中。 要包含连字符,请将其设置为最后一个关闭括号之前的最后一个字符。 例如,`[^] 0-9-]’表示设置“除了紧括号,零到九和连字符’之外的所有东西。 字符串以字符的外观结束,而不是(或者,带有cir-cumflex,in)设置或字段宽度用完时

    要读取带空格的字符串,您可以执行以下操作:

    需要了解更多c/c++开发分享如何在C中读取包含空格的字符串?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

     char name[30],ch; i=1; while((ch=getchar())!='n') { name[i]=ch; i++; } i++; name[i]='n'; printf("String is %s",name); 

      以上就是c/c++开发分享如何在C中读取包含空格的字符串?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979583.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐