我在寫C一個簡單的程序奇怪的括號:小C程序
int main(int argc, char** argv) {
unsigned char* line = (unsigned char*) malloc(0xFFFF);
while (gets(line) > 0) {
if (line[0] == 'l') {
if (line[2]=='.' && line[3] == '.') {
printf("forbidden path");
}
unsigned char* res = (unsigned char*) malloc(0xFFFF);
unsigned char* cmd = (unsigned char*) malloc(strlen(line) +
1 + strlen(" | grep -v xml") + strlen("/home/files/"));
strcpy(cmd, "ls ");
strcpy(cmd + 3, "/home/boris/0servfiles/");
strcpy(cmd + 3 + strlen("/home/files/"), line + 2);
strcpy(cmd + 3 + strlen("/home/files/") + strlen(line + 2), " | grep -v xml");
execwthr(cmd, res);
printf("%s\n%s", cmd, res);
free(cmd);
free(res);
} else if (line[0] == 'm') {
if (line[2]=='.' && line[3] == '.') {
printf("forbidden path");
}
unsigned char res = (unsigned char*) malloc(0xFFFF);
unsigned char* cmd = (unsigned char*) malloc(strlen(line) +
1 + strlen("/home/files/"));
strcpy(cmd, "mkdir ");
strcpy(cmd + 6, "/home/files/");
strcpy(cmd + 6 + strlen("/home/files/"), line + 2);
execwthr(cmd, res);
printf("%s\n%s", cmd, res);
free(cmd);
free(res);
}
}
return (EXIT_SUCCESS);
}
還有一個小問題。當我嘗試創建一個名爲「h」的文件夾時,我得到以下結果:
m l
mkdir /home/files)l
怎麼了?提前致謝!
甜蜜的耶穌,這是什麼代碼? – Tibor 2012-04-23 21:22:18
這段代碼太難看了,它會傷害我的眼睛 – JosephH 2012-04-23 21:25:05
**調試提示:**分別解決字符串操作和與文件系統交互的問題。事實上,這些是將這個問題分解爲功能的兩名體面候選人。 – dmckee 2012-04-23 21:25:49