【发布时间】:2018-06-14 20:23:32
【问题描述】:
我目前正在使用printf("'%.*s'\n", length, start); 打印一个字符串,其中start 是const char*,长度是int。
正在打印的字符串有时包含换行符\n,这会破坏格式,是否可以在打印输出中将它们替换为字符\ 和n,而不是\n 字符.
如果没有,您能否提供一个替换字符的函数?
该字符串是一个 malloc 的字符串,它具有来自不同指针的其他引用,因此无法更改。
编辑:我编写了以下代码,我认为它可以满足我的需要
static void printStr(const char* start, int length) {
char* buffer = malloc(length * sizeof(char));
int processedCount = 0;
for(int i = 0; i < length; i++) {
char c = start[i];
if(c == '\n') {
printf("%.*s\\n", processedCount, buffer);
processedCount = 0;
} else {
buffer[processedCount] = c;
processedCount++;
}
}
printf("%.*s", processedCount, buffer);
free(buffer);
}
【问题讨论】:
-
是的,这是可能的,但不是
printf,而是在打印之前对字符串进行预处理。 -
@EugeneSh。我添加了一些代码来预处理字符串,有什么问题吗?
-
如果您有问题的答案,请使用下面的“回答您的问题”按钮。不要编辑您的问题以包含答案,因为这会让以后阅读它的人感到困惑。
-
如果你想避免所有不可打印的字符,一些sample code。
-
通常如果要
'\n'-->"\n",那么还需要转义一个'\'然后'\'-->"\\"以区分a的情况backslash和n与\n的字符串。