用 '\0' 替换字符串中字符的所有实例不起作用

问题描述

文件包含字符串:

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'