我试图在 C 中做一些非常基本的字符串处理(例如,给定一个文件名,砍掉文件扩展名,操作文件名,然后重新添加扩展名)- 我对 C 很生疏,并且遇到段错误。
char* fname;
char* fname_base;
char* outdir;
char* new_fname;
.....
fname = argv[1];
outdir = argv[2];
fname_len = strlen(fname);
strncpy(fname_base, fname, (fname_len-4)); // weird characters at the end of the truncation?
strcpy(new_fname, outdir); // getting a segmentation on this I think
strcat(new_fname, "/");
strcat(new_fname, fname_base);
strcat(new_fname, "_test");
strcat(new_fname, ".jpg");
printf("string=%s",new_fname);
欢迎任何建议或指示。
对于这样一个基本问题非常感谢和抱歉
最佳答案
您需要为new_fname
和fname_base
分配内存。以下是如何为 new_fname
执行此操作:
new_fname = (char*)malloc((strlen(outdir)+1)*sizeof(char));
在 strlen(outdir)+1
中,+1 部分用于为 NULL CHARACTER '\0'
终止符分配内存。
关于c - 简单的 C 字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430743/