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 tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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