我想要我的程序要做的是從用戶讀取輸入文本,用空格作爲分隔符標記該字符串,並將每個標記存儲在char *數組中被退回。C中的char *數組
這裏的代碼片段,我試圖使它正常工作:
typedef char* String;
String* split(char* cmd)
{
char* param;
char tmp[128];
String* result = (String*) malloc(10*sizeof(String));
memset(result,NULL,10);
strcpy(tmp,cmd);
param = strtok(tmp," ");
int index = 0;
while(param && index < sizeof(result)/sizeof(*result))
{
result[index] = (char*) malloc(strlen(param));
strcpy(result[index],param);
param = strtok(NULL," ");
index++;
}
}
其中cmd是我和標記化的結果是,將包含每個令牌數組的字符串。
這段代碼試圖通過使用一個簡單的for循環返回的結果進行迭代(分段故障發生)
String* splittedCmd = split(command);
int i;
for(i=0;i<10;i++)
{
if(splittedCmd[i] != NULL)
printf("%s\n",splittedCmd[i]);
}
這裏有什麼問題? – JAM
考慮局部變量和壽命。考慮動態分配,以及爲什麼你沒有它。請考慮使用'strncpy'來代替。考慮將此標記爲「作業」。並考慮切換到C++。 –