Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
780 views
in Technique[技术] by (71.8m points)

string - What does %[^ ] mean in C?

What does %[^ ] mean in C? I saw it in a program which uses scanf for taking multiple word input into a string variable. I don't understand though because I learned that scanf can't take multiple words.

Here is the code:

#include <stdio.h>
#include <stdlib.h>

int main() {
    char line[100];
    scanf("%[^
]",line);
    printf("Hello,World
");
    printf("%s",line);
    return 0;
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

[^ ] is a kind of regular expression.

  • [...]: it matches a nonempty sequence of characters from the scanset (a set of characters given by ...).
  • ^ means that the scanset is "negated": it is given by its complement.
  • ^ : the scanset is all characters except .

Furthermore fscanf (and scanf) will read the longest sequence of input characters matching the format.

So scanf("%[^ ]", s); will read all characters until you reach (or EOF) and put them in s. It is a common idiom to read a whole line in C.

See also §7.21.6.2 The fscanf function.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...