Hozzászólások
Hi,
lenne egy kerdesem. A valasz nagyon surgos lenne. Tehat egy parancsot kell bekernem 1 db parameterrel, 2 scanf paranccsal, ugy hogy ha nem kap parametert bevitelnel, akkor irjon ki egy error message-t.
Mar nincs tobb otletem. :(
Cisco
- A hozzászóláshoz be kell jelentkezni
Hali!
[code:1:90159711e4]#include <stdio.h>
int main()
{
char cmd[64], param[64];
if (scanf("%s %s", cmd, param) != 2) {
fprintf(stderr, "Keves parameter.\n");
return 1;
}
printf("cmd: %s; param: %s\n", cmd, param);
return 0;
}[/code:1:90159711e4]
Teszt:[code:1:90159711e4]$ echo a b | ./prog
cmd: a; param: b[/code:1:90159711e4]
- A hozzászóláshoz be kell jelentkezni
Hi,
nekem nem mukodik, ha csak a parancsot adom meg, az enter utan var a parameterre.
Cisco
- A hozzászóláshoz be kell jelentkezni
Hali!
Az azért van, mert a scanf() addig olvas, amig meg nincs a kellő számú paraméter, vagy amíg nem talál EOF-ot. A megoldás az, hogy beolvasod a sort fgets()-el, majd az sscanf()-et használod.
- A hozzászóláshoz be kell jelentkezni
Hi,
ertem es en is erre a kovetkeztetesre jutottam, csak azt hittem valahogy megis meg lehet oldani ha ez a feladat:
The command is being read with scanf. Remember that scanf returns the command untill a whitespace. So if a command with an argument is given, scanf should be called two times. First, to determine the command. If the command needs an argument scanf should be called a second time to determine the argument. If an argument is expected but omitted by the user, the program should print an error message.
Cisco
- A hozzászóláshoz be kell jelentkezni
Udv,
ha esetleg valaki gondolkodott rajta, nincs megoldas!!! Vagyis az a megoldas, hogy nincs megoldas. :)
Cisco
- A hozzászóláshoz be kell jelentkezni
[quote:d7781dc253="Cisco"]Udv,
ha esetleg valaki gondolkodott rajta, nincs megoldas!!! Vagyis az a megoldas, hogy nincs megoldas. :)
Cisco
No most nem ertelek baratom... Amit angolbol citaltal, az mindent elmond...
En ezt a megoldast ertem alatta, habar sajatmagamnak en az egeszet egy scanf-be csinalnam meg... :-)
[code:1:d7781dc253]#include <stdlib.h>
main()
{
char cmd[256];
char arg[256];
scanf("%[^ \n\t\r]%*[ \t]", cmd);
if (strcmp (cmd, "cmd1") == 0 ||
strcmp (cmd, "cmd3") == 0 ||
strcmp (cmd, "cmd5") == 0 ||
strcmp (cmd, "cmd7") == 0 ||
strcmp (cmd, "cmd9") == 0)
{
if (n == 0 || scanf("%[^ \n\t\r]", arg) != 1)
{
printf("Error %s need an argument!\n", cmd);
return;
}
printf("cmd: %s, arg: %s\n", cmd, arg);
}
else
{
printf("cmd: %s\n", cmd);
}
}
[/code:1:d7781dc253]
Zsiraf[/code]
- A hozzászóláshoz be kell jelentkezni
Udv!
Mit jelent ez a szo: "citaltal"
Ha esetleg arra gondoltal, hogy en forditottam angolra a feladotot, akkor tevedsz. En igy kaptam es bevagtam ide. Ok irtak: Michel van den Braak, Ben Juurlink, and Koen Bertels
Jah, amugy mi akar lenni az n valtozo a 14. sorban. Csak mert amiatt nem fut le a progi.
na, a legjobbakat,
Cisco
- A hozzászóláshoz be kell jelentkezni
Ok, rajottem mire hasznaltad a "citalni" szot, tehat ha csak ezert irnal ne faraszd magad....
- A hozzászóláshoz be kell jelentkezni