我必须编写一个包含不同命令的程序,例如:“注册用户名密码”,“登录用户名密码”,“ del_user用户名”。我想从命令行逐行读取命令。识别它们,并分开单词,计算每行中单词的数量,并使用它们(例如用户名和密码)作为某些功能的输入。
如何读取c中的一行? 如何拆分和保存每一行的单词?
我尝试使用scanf,gets等读取输入。
答案 0 :(得分:0)
使用fgets
阅读每一行。
仅包含少量项目,请尝试解析最大项目。 sscanf
将返回已解析的项目数。根据扫描的项目数和匹配命令进行处理。
#include <stdio.h>
#include <string.h>
int main ( void) {
char line[100] = "";
char command[100] = "";
char name[100] = "";
char pw[100] = "";
char extra[100] = "";
int result = 0;
while ( fgets ( line, sizeof line, stdin)) {
result = sscanf ( line, "%99s%99s%99s%99s", command, name, pw, extra);
if ( 2 == result) {
if ( ! strcmp ( "del_user", command)) {
//process name to del_user
}
}
if ( 3 == result) {
if ( ! strcmp ( "signup", command)) {
//process name pw to signup
}
if ( ! strcmp ( "login", command)) {
//process name pw to login
}
}
}
return 0;
}
答案 1 :(得分:0)
您可以执行以下操作:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int x,i,j,length;
printf("Enter the number of names you want to sort.\n");
scanf("%d",&x);
char *names[x],*p,name[50],*t;
printf("Enter the names:\n");
for(i=0;i<x;i++)
{
scanf(" %[^\n]",name);
length = strlen(name);
p = (char *)malloc(length+1);
strcpy(p,name);
names[i] = p;
}
printf("Entered names are:\n\n");
for(i=0;i<x;i++)
{
printf("%s\n",names[i]);
}
printf("\n\nThe sorted names are:\n");
for(i=0;i<x-1;i++)
{
for(j=i+1;j<x;j++)
{
if(strcmp(names[i],names[j])>0)
{
strcpy(t,names[i]);
strcpy(names[i],names[j]);
strcpy(names[j],t);
}
}
}
for(i=0;i<x;i++)
{
printf("%s\n",names[i]);
}
return 0;
}
演示