gpt4 book ai didi

c - 反斜杠和双反斜杠

转载 作者:行者123 更新时间:2023-12-01 13:19:28 24 4
gpt4 key购买 nike

我有一个带有路径的文件。但我无法在 C 中正确读取它们。文件中一行的示例:

C:\Trust\The\process.txt

我想要这个:

C:\\Trust\\The\\process.txt

但是如何用双反斜杠替换反斜杠呢?我有这个功能:

/*  Replace a string */
char* replace(char* text, char* replace, char* element) {
int i, j, k;

int searchSize = strlen(text);
int replaceSize = strlen(replace);
int size = strlen(element);

char* ret;

if (!searchSize) {
ret = malloc(size + 1);
for (i = 0; i <= size; i++) {
ret[i] = element[i];
}
return ret;
}

int retAllocSize = (strlen(element) + 1) * 2;
ret = malloc(retAllocSize);

int bufferSize = 0;
char* foundBuffer = malloc(searchSize);

for (i = 0, j = 0; i <= size; i++) {
if (retAllocSize <= j + replaceSize) {
retAllocSize *= 2;
ret = (char*) realloc(ret, retAllocSize);
}

else if (element[i] == text[bufferSize]) {
foundBuffer[bufferSize] = element[i];
bufferSize++;


if (bufferSize == searchSize) {
bufferSize = 0;
for (k = 0; k < replaceSize; k++) {
ret[j++] = replace[k];
}
}
}

else {
for (k = 0; k < bufferSize; k++) {
ret[j++] = foundBuffer[k];
}
bufferSize = 0;

ret[j++] = element[i];
}
}


free(foundBuffer);

return ret;
}

我以为我可以这样使用,但它不起作用:

char *token ;
char s[]="C:\Trust\The\process.txt";
token=replace("\0x5c","\\",s);

最佳答案

将注释放在一起,您需要了解 C 源代码中字符串中的反斜杠是一个转义字符。表示“下一个字符有特殊含义”。

为了在 C 字符串中放置一个反斜杠字符,您必须告诉编译器“您必须将这个反斜杠放入字符串中”,为此,您在字符串中放置两个反斜杠 源代码 所以编译代码中的字符串将有一个反斜杠。总结:

char s[]= "C:\\my\\dir"";

在你的源代码中,编译后的代码中会有一个字符串:

C:\my\dir

关于c - 反斜杠和双反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51040812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com