我一直在尝试在 scanf 上使用正则表达式,以读取最多 n 个字符的字符串并丢弃任何其他内容,直到换行符为止。任何空格都应被视为常规字符,因此包含在要读取的字符串中。我研究了一篇关于正则表达式的维基百科文章,但我无法让 scanf 正常工作。这是我尝试过的一些代码:
scanf("[ ]*%ns[ ]*[\n]", string);
[ ] 应该用于实际的空格字符,* 应该表示一个或多个,n 是要读取的字符数,string 是分配有 malloc 的指针。我尝试了几种不同的组合;但是我倾向于只阅读句子的第一个单词(停在空格字符处)。此外, * 似乎丢弃了一个字符而不是表示“零个或多个”......
有人可以详细解释scanf如何解释正则表达式吗?更重要的是,重复使用 getc 是否有效?
提前致谢