我正在做一项暗示使用指令在文件中执行某些操作的工作,这些操作将从存档中读取,或者将通过输入提供。
正是我的问题涉及通过输入给出指令的操作。
假设我向我的程序提供以下说明:
select 7
insert "foo foo"
delete 8
在下面显示的代码中,我将在一个字符串中获得完整说明(如上所示):
char input[256];
int i;
printf("Insert an instruction: ");
fgets(input, 256, stdin);
/* Newline removal */
for(i = strlen(input)-1; i && input[i] < ' '; i--)
input[i] = 0;
现在,正如您所看到的,指示分为两部分,首先是要执行的操作。举个例子,行动是:
select
insert
delete
然后是号码或伴随该指令的字符串。在给出的例子中:
7
"foo foo"
8
所以,基本上,我有完整的指令,但我想在两个单独的字符串中使用该指令,因此我可以更好地使用它们。
我该怎么办?我需要以其他方式输入,还是拆分字符串?或者我在这种情况下需要两个以上的字符串?
答案 0 :(得分:1)
最好strdup()你的输入,然后你可以切成两个单独的字符串。如果您不担心修改输入,那么您不必考虑它,但在我看来这是一个很好的做法。
#include <string.h>
int main()
{
char *p ;
char *cmd ;
char *arg ;
char input[256] ;
strcpy(input,"command argument") ;
char *t = strdup(input) ; /* if you cannot modify the input */
p = cmd = t ;
while (*p != ' ' && *p != 0 && *p != '\n') p++ ;
*p++ = 0 ;
while (*p == ' ') p++ ;
arg = p ;
return 0 ;
}