这是我尝试输入的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *convertDirec(char direc[]){
for(int i = 0; i < strlen(direc); i++){
if(direc[i]=='/'){
direc[i]=='\\';
}
}
return direc;
}
int main(){
printf("%s", convertDirec("C:/Users/user/Documents/data.csv"));
}
但是,printf
中的main
语句仅打印相同的路径。我在网上找到了另一个与此相关的资源,其逻辑似乎与我的相同,因此我不确定我的错误在哪里。我尝试做direc[i] == "/"
,但这得到了相同的结果。我也尝试替换随机字母,但这也失败了。
我也尝试使用指针来执行此操作,但这也不起作用。
char *convertDirec(char direc[]){
for(char *p = direc; *p != '\0'; ++p){
if(*p == '/')
*p='\\';
}
return direc;
}
感谢您的帮助,谢谢。
答案 0 :(得分:8)
让编译器为您提供帮助:
test.c: In function ‘convertDirec’:
test.c:8:21: warning: statement with no effect [-Wunused-value]
direc[i]=='\\';
~~~~~~~~^~~~~~
这会将当前字符与'\\'
进行比较,并丢弃结果(因此,发出警告)。
第二个版本失败,因为char文字不可写,并且写入是未定义的行为,因此您需要将其复制到您可能要写入的内存位置,或者获取非常量char*
从其他地方:
//Same as above
int main(int argc, char** argv){
printf("%s", convertDirec(argv[1]));
}
$ ./test c:/Users/
c:\Users\
答案 1 :(得分:5)
direc[i] == '\\';
应该是direc[i] = '\\';
,这就是为什么什么也没发生的原因。
当然,如果您修复它,很可能会崩溃,因为您不应该写入字符串文字。您可以改为:
int main() {
char string[] = "C:/Users/user/Documents/data.csv"; // you can modify this copy
printf("%s", convertDirec(string));
}