scanf输入含有空格的字符串
2015-05-01 18:56
197 查看
1、可以使用scanf的扫描集来 扫描允许的字符串来接收用户输入的数据。如:以下代码
若用户输入 1112ABCD,再输入回车,则收不到用户的数据。只有用户输入A112,,再输入回车,才能接收到字符串"A"。而且,若输入ABCD,点击回车后,系统仍在等待用户输入内容,直到我输入1,再按回车,系统才停止接收数据。也就是说,scanf遇到不是扫描集中的字符,就退出。
而我们的目的是:将除了回车以外所有字符都接收到,而且遇到空格就结束,因此,可以考虑,只接收用户输入的回车字符的补集。
2、将%[A-Z]改为%[^(A-Z)]来验证补集:
3、使用%[^\n]的验证:
输入回车便结束。
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { char str[100]; scanf("%[A-Z]", str); printf("%s\n", str); } return 0; }
若用户输入 1112ABCD,再输入回车,则收不到用户的数据。只有用户输入A112,,再输入回车,才能接收到字符串"A"。而且,若输入ABCD,点击回车后,系统仍在等待用户输入内容,直到我输入1,再按回车,系统才停止接收数据。也就是说,scanf遇到不是扫描集中的字符,就退出。
而我们的目的是:将除了回车以外所有字符都接收到,而且遇到空格就结束,因此,可以考虑,只接收用户输入的回车字符的补集。
2、将%[A-Z]改为%[^(A-Z)]来验证补集:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { char str[100]; scanf("%[^(A-Z)]", str); printf("%s\n", str); } return 0; }结果刚好颠倒过来。因此可以用%[^\n]来接收用户含有空格的字符串,以回车结束,避免了使用gets。
3、使用%[^\n]的验证:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { char str[100]; scanf("%[^\n]", str); printf("%s\n", str); } return 0; }
输入回车便结束。
相关文章推荐
- 2016年11月26日学习总结----scanf输入带空格字符串
- scanf()函数实现输入带有空格的字符串
- while循环输入字符串中以Esc键作为循环结束标识——scanf读取带空格字符串
- 关于C语言中用scanf语句输入带有空格字符串问题
- EASY_ZJU_PAT_ADVANCED LEVEL 1050 高效输入含有空格的字符串 高效删除字符串中的字符
- 如果用scanf怎么将带空格的字符串输入到数组中
- scanf怎样才能输入带空格字符串?
- 如何在scanf中输入带空格的字符串
- 两种方法让scanf遇到空格继续输入字符串
- c语言中scanf输入带空格的字符串以及scanf输入单个字符的问题
- 使用scanf_s输入得到一行带空格的字符串
- 用scanf获取一行包括空格的字符串,并指定以特定输入结束读入
- 输入一个字符串,字符串中含有字母、逗号、空格,实现将输入字符中的逗号,空格号去除,字母分行显示
- java 实现接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写
- strlen()不能算出scanf输入字符串的空格问题
- 华为计算字符个数写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- C++如何输入含有空格字符的字符串
- 华为2写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- 接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- 接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写