从指令中获取两个字符串

时间:2013-11-16 14:10:11

标签: c string input

我正在做一项暗示使用指令在文件中执行某些操作的工作,这些操作将从存档中读取,或者将通过输入提供。

正是我的问题涉及通过输入给出指令的操作。

假设我向我的程序提供以下说明

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

所以,基本上,我有完整的指令,但我想在两个单独的字符串中使用该指令,因此我可以更好地使用它们。

我该怎么办?我需要以其他方式输入,还是拆分字符串?或者我在这种情况下需要两个以上的字符串?

1 个答案:

答案 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 ;
}