我必须接受命令: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);
}
到目前为止看起来是否合适?
答案 0 :(得分:1)
argv[0] == 'e'
首先不是好事。 argv
是char**
,因此如果您想将argv[i]
与某些内容进行比较,则应使用strcmp()
。
因此,为了测试第一个单词是否为echo
,您必须这样做:
if(strcmp(argv[1], "echo") == 0) // argv[0] is your program name
{ //do something }
您还应该注意到argv[i]
是char*
,如果您想复制字符串,可以使用strcpy
。
int main(int argc, char* argv[])
{
int j = 0;
char buff[100];
FILE * fp;
if(argc < 2)
{
printf("There are not enough arguments\n");
return 1;
}
if(strcmp(argv[1], "echo") == 0) // means you the user typed 'prog_name echo "something"'
{
if(argc > 4) // So you have 'prog_name echo "something" > filename'
// But you cannot do 'prog_name echo "something" >filename' this way
// Because '>filename' will be counted as 1 argument (1 word)
{
fp = fopen(argv[4], "w");
fwrite(argv[2], sizeof(char), strlen(argv[2]), fp);
fclose(fp);
}
else
printf("Nothing to save\n");
}
return 0;
}