03. august 2006 - 23:41
Der er
9 kommentarer og 2 løsninger
Problem ved oprettelse af mapper / String 2 Char
Jeg bruger følgende funktion til at konvertere en mappe-sti til char: char *stoc( string stringtekst ) { int length = stringtekst.length(), i; char *chartekst = (char *)malloc(length); for( i=0; i<length; i++ ) chartekst[ i ] = stringtekst[ i ]; chartekst[ i+1 ] = '\0'; return chartekst; } Og følgende function til at oprette en sti af mapper, med deres undermapper: void CreateDir(char* Path) { char DirName[256]; char* p = Path; char* q = DirName; while(*p) { if (('\\' == *p) || ('/' == *p)) { if (':' != *(p-1)) { CreateDirectory(DirName, NULL); } } *q++ = *p++; *q = '\0'; } CreateDirectory(DirName, NULL); } Når Jeg fx har string str_path = "mappe\\undermappe\\mappe" CreateDir( stoc ( str_path ) ); Mit problem er imidlertidigt at der går noget galt et sted :( mapperne bliver oprettet, men den sidste mappe i stien, får tilføjet et mystisk 'Y' tegn ?? jeg har på fornemelsen at det er NULL tegnet i Char arrayet som er skyldner, men kan ikke selv finde problemet
Annonceindlæg fra Infor
03. august 2006 - 23:42
#1
Det skal lige siges at CreateDir("mappe\\undermappe\\mappe") virker perfekt
03. august 2006 - 23:48
#2
jeg tror at din stoc kan erstattes af den indbyggede c_str metode på string !
03. august 2006 - 23:49
#3
CreateDir( str_path.c_str() );
03. august 2006 - 23:50
#4
dvs c_str(string) ??
03. august 2006 - 23:50
#5
prøver
03. august 2006 - 23:51
#6
cannot convert parameter 1 from 'const char *' to 'char *'
03. august 2006 - 23:54
#7
CreateDir( (char *)str_path.c_str() ); CreateDir vil næppe ændre den
03. august 2006 - 23:55
#8
eller nok pænere ret til void CreateDir(const char* Path)
03. august 2006 - 23:55
#9
void CreateDir(const char* Path) { char DirName[256]; const char* p = Path; char* q = DirName; while(*p) { if (('\\' == *p) || ('/' == *p)) { if (':' != *(p-1)) { CreateDirectory(DirName, NULL); } } *q++ = *p++; *q = '\0'; } CreateDirectory(DirName, NULL); } CreateDir( str.c_str() ); Sådan... vupti
03. august 2006 - 23:56
#10
nåmen - smid et svar... selvom mit eget er løsningen :P
04. august 2006 - 00:06
#11
svar
Kurser inden for grundlæggende programmering