问题描述
文件包含字符串:
40,30,20,10 //newline at end
50,60,70,80
这是重要的代码:
delim = ','
while(getline(&buf,&bufcap,stdin) > 0) {
int i;
for(i=0; i < strlen(buf2); i++) {
if(buf[i] == delim) {
buf[i] = '\0';
}
}
printf(buf);
产量:
4050
我想要的:
40\030\020\010
50\060\070\080
解决方法
'\0' 为空字符,所有字符串函数在到达该字符时将停止,因为它表示字符串的结尾
,'\0'
标记字符串的结尾,因此 strlen
将在第一次到达时返回。因此,您的循环将在第一个分隔符后停止。字符文字中的反斜杠始终标记转义码。与下一个字符结合,用于特殊字符。您可以使用 '\\'
输入文字反斜杠,因此您必须插入两个字符:'\\'
和 '0'
。