【发布时间】:2017-01-04 18:30:33
【问题描述】:
我想将输入字符串(路径)解析到数组中。
例如,如果输入是
cd("C/Hra/Halo 4/Hra");
数组应该包含{"C","Hra","Halo 4","Hra"},但它包含{"C","Hra","Halo 4,"HraC"}。
我的朋友建议我为每个字符串添加"\0",但它不起作用。
有人可以建议我如何修复它吗?
我的代码:
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
void cd(char* path){
printf("Path %s \n",path);
int count = 0;
int i = 0;
int length = (int)strlen(path);
for(i;i<length;i++){
if(path[i]=='/')
count ++;
}
char foldersName[count][255];
char str[strlen(path)];
strcpy(str,path);
char * pch;
pch = strtok (str,"/");
count = 0;
while (pch != NULL)
{
strcpy(foldersName[count],pch);
strcat(foldersName[count],"\0");
pch = strtok (NULL, "/");
count ++;
}
printf("----------------Tokens-----------\n");
for(i =0;i<count;i++){
printf("%s \n",foldersName[i]);
}
}
int main(int argc, char *argv[])
{
cd("C/Hra/Halo 4/Hra");
}
【问题讨论】:
-
char foldersName[count][255];char str[strlen(path)];-->char foldersName[count+1][255];char str[length+1];