Avatar billede dauer Nybegynder
30. oktober 2001 - 20:29 Der er 11 kommentarer og
1 løsning

standard input?

jeg er lige begyndt med c og er løbet ind i noget med standard input, som jeg ikke helt kan få til at virke. Hvor er det helt præcist at de input kommer fra?
Avatar billede henrik_ffc Nybegynder
30. oktober 2001 - 21:24 #1
Standard input kommer fra tastaturet
Avatar billede alvion Nybegynder
30. oktober 2001 - 22:45 #2
Standard input KAN komme fra tastaturet. Men det kan også komme fra en fil, hvis du f.eks. starter dit program med:

ditprogram.exe <en-inputfil.txt

eller fra outputtet fra et andet program, hvis du starter dit program med:

dir | ditprogram.exe
Avatar billede henrik_ffc Nybegynder
30. oktober 2001 - 23:20 #3
Ja det er en vigtig pointe jeg lige overså dér
Avatar billede dauer Nybegynder
31. oktober 2001 - 19:37 #4
hvodan kan de komme fra tastaturet? Har hvert input så et specielt navn eller hva\'?
Avatar billede soepro Nybegynder
01. november 2001 - 09:52 #5
Du kan betragte stdin som en speciel fil, som din compiler åbner for dig. Normalt vil stdin som henrik og alvion siger være tastaturet, men det kan altså også være en fil.

Hver gang brugeren trykker på en tast, kan man sige at længden af indholdet stdin stiger med 1 tegn.

Hver tast har IKKE et specielt navn - det bliver blot til et tegn i \"filen\".

Funktioner som f.eks. getch() en i virkeligheden en marco der laver fgetch(stdin), dvs. læser et tegn fra stdin.

#include <stdio.h>
#include <conio.h>

int main(void)
{
  char enTast;
  while ((enTast = getch()) != \'\\x1B\')
  {
    cputs(\"Du har trykket på: \\\'%c\\\' \\r\\n\", enTast);
  }; // Kør indtil ESC trykkes

  cputs(\"Du trykkede ESC.\\r\\n\");
  return 0;
}
Avatar billede dauer Nybegynder
01. november 2001 - 19:30 #6
okay på den måde. Du kan lige se det program jeg har problemer med at få til at virke
Avatar billede dauer Nybegynder
01. november 2001 - 19:30 #7
#include <stdio.h>

int main(int argc, char *argv[])
{
  int taeller=0;
  while(getchar() !=EOF)
  taeller++;
  printf(\"%s%d\", \"Der var\",taeller);
  printf(\"%s\\n\", \"byte i filen.\");
  return 0;
}
Avatar billede dauer Nybegynder
01. november 2001 - 19:32 #8
meningen er så at man skal taste:
type input1.c|input

så skulle programmet tælle, men der sker ikke rigtig noget...
Avatar billede dejbjerg Nybegynder
03. november 2001 - 23:51 #9
#include <stdio.h>

int main(int argc, char* argv[])
{
FILE* fp;
char ch;
int taeller=0;

fp = fopen(argv[1], \"r\");
ch = getc(fp);

while(ch != EOF);
  {
  taeller++;
  ch = getc(fp);
  }

printf(\"%s%d\", \"Der var\",taeller);
printf(\"%s\\n\", \"byte i filen.\");
return 0;
}
Avatar billede soepro Nybegynder
05. november 2001 - 09:14 #10
Jeg har taget din kodestump, kompileret og kørt den - og det virker fint. (Bortset fra at alle CR i filen ikke bliver talt med !)

Når du kører consol-applikationer (andet navn for DOS-programmer) under de nyere C-compilere, bliver disse kørt i et vindue, og vinduet derefter lukket. Det betyder at man sommetider ikke kan nå at se, hvad der skete.

Prøv at starte et DOS-prompt og så skrive \'type input.c | input.exe\' der - det burde altså virke.
Avatar billede dauer Nybegynder
05. november 2001 - 19:50 #11
som sagt er jeg lidt af en begynder i c så du må bære over med mig. Jeg har fået det til at virke nu. Grunden til at det ikke virkede var at jeg startede programmet input.exe og og skrev \"type input.c|input.exe der, det virkede jo selvfølgelig ikke! Bær over med mig, du får lige lidt point for din ulejlighed.
tak for hjælpen.
Avatar billede soepro Nybegynder
06. november 2001 - 08:55 #12
Vi kan alle begå en torsktanke fra tid til anden !Held og lykke med C++ fremover, og tak for pointene.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester