【发布时间】:2016-02-13 16:34:25
【问题描述】:
我必须接受命令:echo 'slkdjf' > filename
所以用户输入“echo”,他们想要输入的字符串,以及他们想要输入的文件名。我将如何用 C 编写来接收这些命令。
这是我到目前为止所做的。
int main(int argc, char* argv[])
{
int j = 0
int i = 6
char buff[100];
FILE * fp;
if(argv[0] == 'e' && argv[1] == 'c' && argv[2] == 'h' &&
argv[3] == 'o' && argv[4] == ' ' && argv[5] == '''){
while(argv[i] != '''){
buff[j] = argv[i];
i++;
j++;
}
}
fp = fopen("\proc\hello\hello", "w");
fwrite(buff, 1, sizeof(buff), fp);
fclose(fp);
}
到目前为止看起来还不错吗?
【问题讨论】:
-
我不知道。到目前为止它做了什么?它编译吗?它执行吗?如果它确实执行了,它的行为是否出乎意料?
-
这只是一个大概的理解。我还没有编译它或任何东西。只是想知道我是否走在正确的轨道上
-
您似乎误解了
argv数组的工作原理。它是一个字符串数组,即以空字符结尾的字符数组。在尝试编写 shell 之前,多了解一下 C 并熟悉如何处理字符串可能是个好主意。 -
...你应该检查(使用
argc)你的程序在尝试使用它们之前收到了多少参数 -
... 如果您要复制到
buff的参数长于您为buff分配的100 个字节,您认为会发生什么?我不想太粗鲁,但是,正如你所问的......你上面的程序看起来不正确。