循环多行代码的好方法是什么?
我的函数foo(char *str)
接收str
,它是一个多行字符串,并带有空行终止的新行字符。 我正在尝试编写一个循环遍历字符串并在一行上运行。 什么是实现这一目标的好方法?
void foo(char *str) {
while((line=getLine(str)) != NULL) {
// Process a line
}
}
我是否需要自己实现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);
}
但是,您应该注意,strtok()既是破坏性的,也不是线程安全的。
我想你可能会使用strtok
,它会将字符串标记为由某些特定字符分隔的数据包,在您的情况下为换行符:
void foo(char *str)
{
char *line = strtok(str, "n");
while(line)
{
//work with line, which contains a single line without the trailing 'n'
...
//next line
line = strtok(NULL, "n");
}
}
但请记住,这会改变str
的内容(它实际上会用'