1. char *p1;
2. char *strsourcefile;
..........
3. strsourcefile= ret;
4. p1 =strchr(strsourcefile, ':');
5. p1++;
6. p1 =strchr(p1, ':');
跟踪的图片传不上按这格式来敲几个字吧!
名称
p1 0x0bfd20e0 " File\lengprog(ys)\temp\陶瓷元件1.sldprt"
strsourcefile 0x0bfd20a8 "C:\Program File\lengprog(ys)\test\Cheadgp.cfm C:\Program File\lengprog(ys)\temp\陶瓷元件 1.sldprt"
strsourcefile的字符是VB程序传给ret的,是VB的APP.path产生的,没法考虑c里的转义不转义的问题,即两个文件路径(中间有个空格),我想从这空格分成两段
可第4句的strchr判断位置的无论用什么字符,它都从后面一个Program File空格给截断,各位老师有没有什么解决的方法。
我用wIN32 Console把char *strsourcefile="C:\Program File\lengprog(ys)\test\Cheadgp.cfm C:\Program File\lengprog(ys)\temp\陶瓷元件1.sldprt"进行执行是可以的vb传进来为什么就不行?
4 个解决方案
#1
路径如果有空格,用引用引起来
#2
多找几次, 先找.(点) , 点后找空格
#3
不知道满不满足楼主的需求:
char *p1;
char *strsourcefile;
int i = 0;
char tmp[100];
char *ret = "C:\\Program File\\lengprog(ys)\\test\\Cheadgp.cfm C:\\Program File\\lengprog(ys)\\temp\\陶瓷元件1.sldprt";
strsourcefile = ret;
while (1){
if (strsourcefile[0] == ' ' && strsourcefile[2] == ':')
{
memset(tmp, '\0', 100);
strncpy(tmp, ret, i);
p1 = ++strsourcefile;
break;
}
strsourcefile++;
i++;
}
printf("0.%s %s\n",tmp, p1);
#4
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_PATH 256
char strsourcefile[]="C:\\Program File\\lengprog(ys)\\test\\Cheadgp.cfm C:\\Program File\\lengprog(ys)\\temp\\陶瓷元件 1.sldprt";
char s1[MAX_PATH];
char s2[MAX_PATH];
char *p,*q;
int main() {
s1[0]=0;
s2[0]=0;
p=strchr(strsourcefile,':');
if (p) {
q=strchr(p+1,':');
if (q) {
strncpy(s1,p-1,__min(q-p-1 ,MAX_PATH-1));s1[MAX_PATH-1]=0;
strncpy(s2,q-1,__min(strlen(q-1),MAX_PATH-1));s2[MAX_PATH-1]=0;
}
}
printf("[%s]\n[%s]\n",s1,s2);
return 0;
}
//[C:\Program File\lengprog(ys)\test\Cheadgp.cfm]
//[C:\Program File\lengprog(ys)\temp\陶瓷元件 1.sldprt]
//
#1
路径如果有空格,用引用引起来
#2
多找几次, 先找.(点) , 点后找空格
#3
不知道满不满足楼主的需求:
char *p1;
char *strsourcefile;
int i = 0;
char tmp[100];
char *ret = "C:\\Program File\\lengprog(ys)\\test\\Cheadgp.cfm C:\\Program File\\lengprog(ys)\\temp\\陶瓷元件1.sldprt";
strsourcefile = ret;
while (1){
if (strsourcefile[0] == ' ' && strsourcefile[2] == ':')
{
memset(tmp, '\0', 100);
strncpy(tmp, ret, i);
p1 = ++strsourcefile;
break;
}
strsourcefile++;
i++;
}
printf("0.%s %s\n",tmp, p1);
#4
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_PATH 256
char strsourcefile[]="C:\\Program File\\lengprog(ys)\\test\\Cheadgp.cfm C:\\Program File\\lengprog(ys)\\temp\\陶瓷元件 1.sldprt";
char s1[MAX_PATH];
char s2[MAX_PATH];
char *p,*q;
int main() {
s1[0]=0;
s2[0]=0;
p=strchr(strsourcefile,':');
if (p) {
q=strchr(p+1,':');
if (q) {
strncpy(s1,p-1,__min(q-p-1 ,MAX_PATH-1));s1[MAX_PATH-1]=0;
strncpy(s2,q-1,__min(strlen(q-1),MAX_PATH-1));s2[MAX_PATH-1]=0;
}
}
printf("[%s]\n[%s]\n",s1,s2);
return 0;
}
//[C:\Program File\lengprog(ys)\test\Cheadgp.cfm]
//[C:\Program File\lengprog(ys)\temp\陶瓷元件 1.sldprt]
//