这个chomp函数中的分隔符是什么?

时间:2016-09-29 21:15:33

标签: c string

我试图了解以下代码的作用

void chomp (char* string, char delim) {  
   size_t len = strlen (string);  
   if (len == 0) return;  
   char* nlpos = string + len - 1;  
   if (*nlpos == delim) *nlpos = '\0';  
}

什么是分隔符?第四行基本上是保存字符串中的最后一个字符吗?

3 个答案:

答案 0 :(得分:2)

如果字符串的最后一个字符与delim匹配,那么字符串(* nlpos)中的字符位置将被分配一个零字节,这有效地将C字符串终止于靠近字符串开头的一个位置。

认为术语chomp在Perl中越来越受欢迎,它经常在逐行处理时修剪终止换行符。

答案 1 :(得分:0)

分隔符是换行符。 然后计算字符串长度并将类型设置为length(size_t将长度格式化为表示大小的ISO定义类型)。 检查字符串长度为零(0)长度,然后返回调用例程,如果为真

答案 2 :(得分:0)

此代码将删除字符串中的分隔符(可以是缓冲区)并在结尾处放置空字符(\0)。 第四行将最后一个char存储在字符串中,并用空字符替换它。 分隔符是用于在纯文本或区域中指定边界的字符序列。因此它最终会到来。 NULL字符用于C样式字符串,以指示字符串结尾的位置。