您的位置:首页 > 其它

scanf输入含有空格的字符串

2015-05-01 18:56 197 查看
1、可以使用scanf的扫描集来 扫描允许的字符串来接收用户输入的数据。如:以下代码
#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;
}


输入回车便结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐