我的函数foo(char *str)接收str到的是一个多行字符串,其中包含以null结尾的换行符.我正在尝试编写一个while循环,它遍历字符串并在一行上运行.实现这一目标的好方法是什么?
void foo(char *str) {
while((line=getLine(str)) != NULL) {
// Process a line
}
}
Run Code Online (Sandbox Code Playgroud)
我需要自己实现getLine还是有内置功能为我做这个?
您需要自己根据换行符实现某种解析。带有“\n”分隔符的 strtok() 是一个非常好的选择,它可以执行类似于您正在寻找的操作,但它的使用方式必须与您的示例略有不同。它会更像是:
char *tok;
char *delims = "\n";
tok = strtok(str, delims);
while (tok != NULL) {
// process the line
//advance the token
tok = strtok(NULL, delims);
}
Run Code Online (Sandbox Code Playgroud)
但是,您应该注意,strtok() 既具有破坏性,又不是线程安全的。