循环多行字符串中的行的好方法是什么?

Leg*_*end 7 c string parsing

我的函数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还是有内置功能为我做这个?

dbe*_*eer 2

您需要自己根据换行符实现某种解析。带有“\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() 既具有破坏性,又不是线程安全的。