Avatar billede trexy Nybegynder
27. januar 2004 - 19:14 Der er 14 kommentarer og
1 løsning

Indtast en streng til et array

Jeg vil gerne indtaste en tekst-streng ligesom "hej med dig" i et array, men jeg kan kun få en krakter ad gangen.
Nogle der har et forslag?
Avatar billede arne_v Ekspert
27. januar 2004 - 19:18 #1
Er det:

char s[25];
strcpy(s, "hej med dig");

du leder efter ?
Avatar billede arne_v Ekspert
27. januar 2004 - 19:19 #2
Eller:

char s[25];
fgets(s,sizeof(s),stdin);

?
Avatar billede trexy Nybegynder
27. januar 2004 - 19:50 #3
Det er nok mest den første, men hvordan kan jeg indtast noget data fra tastaturet.
Avatar billede arne_v Ekspert
27. januar 2004 - 19:53 #4
Det er det som den sidste gør.
Avatar billede arne_v Ekspert
27. januar 2004 - 19:55 #5
I C++ kan du også:

char s[25];
cin.getline(s,sizeof(s));
Avatar billede trexy Nybegynder
27. januar 2004 - 20:16 #6
Det virker super, men når jeg smider den ind i en switch case, afslutter den bare programmet, hvad kan det være?
Avatar billede arne_v Ekspert
27. januar 2004 - 21:25 #7
Har næppe noget med indlæsningen at gøre.

Må vi se en lille smule kode ?
Avatar billede trexy Nybegynder
27. januar 2004 - 21:49 #8
Det er koder er kun test, men den afslutter programmet hvis jeg vælger 1

#include <stdio.h>
#include <string.h>

int main()
{
    char cInFile[50];
    int nc,i;
    int valg;

    printf("tag et tal ");
    scanf("%d",&valg);
    switch(valg)
    {
    case 1:
        printf("Indtast noget tekst: ");
        fgets(cInFile,sizeof(cInFile),stdin);
        nc = strlen(cInFile);
    break;
    case 2:
   
    for(i=0;i<nc;i++)
    {
        printf("%c",cInFile[i]);
    }
    break;
    }

return 0;
}
Avatar billede arne_v Ekspert
27. januar 2004 - 21:57 #9
Måske er det noget a la dette du leder efter:

#include <stdio.h>
#include <string.h>

int main()
{
    char cInFile[50];
    int nc,i;
    int valg;
    do
    {
    printf("tag et tal ");
    scanf("%d",&valg);
    switch(valg)
    {
    case 1:
        printf("Indtast noget tekst: ");
        fgets(cInFile,sizeof(cInFile),stdin);
        nc = strlen(cInFile);
        break;
    case 2:
        printf("%s\n",cInFile);
    break;
    case 3:
        break;
    }
  } while(valg != 3);
  return 0;
}
Avatar billede trexy Nybegynder
27. januar 2004 - 22:23 #10
jeg tror problemet er ,at fgets(cInFile,sizeof(cInFile),stdin); skal ligge i en do while løkke, problemet er, hvordan stopper jeg løkken igen, kan det gøres med newline?

Her lidt af koden             
                        do
            {
            fgets(cInFile,sizeof(cInFile),stdin);
            //crypt(cInFile,iKey);
            }
            while(cInFile != '\n');
Avatar billede trexy Nybegynder
27. januar 2004 - 22:24 #11
Det virker ok, men stopper aldrig:)
Avatar billede arne_v Ekspert
27. januar 2004 - 22:27 #12
Det skulle gerne stoppe når du vælger 3 !
Avatar billede trexy Nybegynder
27. januar 2004 - 22:32 #13
jo, det har jeg lavet, men det er løkken ved fgets(cInFile,sizeof(cInFile),stdin); som skal stoppe når jeg trykker <enter> som det er nu kører det bare videre når jeg trykker på enter
Avatar billede arne_v Ekspert
27. januar 2004 - 23:03 #14
fgets læser en helt linie ind i cInFile, så den løkke skal du slet ikke have.
Avatar billede arne_v Ekspert
16. februar 2004 - 22:15 #15
OK ?
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