Gå til innhold

Trenger litt hjelp til en C Function (newbie)


Anbefalte innlegg

Hei hopp. :roll:

 

Jeg prøver å lage en function, som skal skrive en og en bokstav, med sleep imellom.

F.eks

 

typer("Dette er tekst", 200);

 

"Dette er tekst" er teksten som blir printet ut. 200 er ms i sleep();

 

Stor edit:

 

Jeg kan gi dere koden:

 

#include <stdio.h>
#include <stdlib.h>

void typer(char* text, int sleeps) {
   int i = 0;
   while(i < strlen(text)) {
           printf("%s", text[i]);
           sleep(sleeps);
           i++;
   }
   printf("\n");
}

int main() {
   typer("Dette er en test", 200);
   getchar();
   return 0;
}

 

Den kompilerer uten feil, men programmet klikker med en gang jeg starter det.. "test.exe har et problem og må lukkes." blabla.

 

Ser noen en feil? :ermm:

Husk at jeg er C-newbie, så om dere vet svaret, helst svar på en litt "lett" måte.

 

Takk.

Endret av THROBiX
Lenke til kommentar
Videoannonse
Annonse

Hei hei velkommen skal du være..

 

edit: alt arbeidet for ingenting :cry:

 

jeg bruker vs så det kan være litt forandringer..

Jeg poster koden som fungere så forklare jeg under

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "Windows.h"

void typer(char* text, int sleep) {
  int i = 0;
  while(i < strlen(text)) {
          printf("%C", text[i]);
          Sleep(sleep);
          i++;
  }
  printf("\n");
}

int main() {
  typer("Dette er en test", 200);
  getchar();
  return 0;
}

 

for det første trengte jeg å inkludere #include <string.h> pga strlen (det ser ikke ut som du her det problemet, men dete hadde jeg..

 

så strlen tar pekere til tekst som argument og du brukte et tegn. Så jeg har modifisert typer til å bruke pekere (*)

så printf sin %s leser hele teksten til den kommer til 0 tegnet. så derfor vil ikke koden din fungere (tror det er mulig å bruke %s ved hjelp av Precision Specification) så jeg har brukt %C som skriver et tegn.

 

bare spør hvis det er noe du lurer på..

lykke til :thumbup:

Lenke til kommentar

Nei, dette går ikke med standard C. Du må bruke konsoll-programvaren sine funksjoner for dette.

 

Under Linux vil dette si ting som Ncurses eller Slang (google it). Under Win32 vil det si ting som ..øh.. søk etter "console" på msdn library (google it).

 

Som regel er det greit å vente med slike OS-spesifike ting til man er "ferdig utlært" når det gjelder generell C/C++ - og når man er kommet så langt ønsker man gjerne å lage GUI'er i stedet for konsoll-programmer uansett. :)

Endret av lnostdal
Lenke til kommentar
  • 2 måneder senere...

Beklager bump, men tenkte det var like greit siden jeg skal spørre om noe angående samme kode.

 

La oss si jeg har denne:

void writer(char *text, int wait) {
int i = 0;
while(i < strlen(text)) {
 printf("%c", text[i]);
 sleep(wait);
 i++;
}
printf("\n");
}

 

Så vil jeg få til dette:

writer("Spiller av %s...", FMUSIC_GetName(mod));

Altså, at jeg kan ha %s/%i/%c etc inne i stringen!

 

Vet noen hvordan jeg fikser så det går an?

Beklager for at jeg kanskje spør dumt, men jeg er fortsatt nybegynner i C. :)

Endret av THROBiX
Lenke til kommentar
Beklager bump, men tenkte det var like greit siden jeg skal spørre om noe angående samme kode.

 

La oss si jeg har denne:

void writer(char *text, int wait) {
int i = 0;
while(i < strlen(text)) {
 printf("%c", text[i]);
 sleep(wait);
 i++;
}
printf("\n");
}

 

Så vil jeg få til dette:

writer("Spiller av %s...", FMUSIC_GetName(mod));

Altså, at jeg kan ha %s/%i/%c etc inne i stringen!

 

Vet noen hvordan jeg fikser så det går an?

Beklager for at jeg kanskje spør dumt, men jeg er fortsatt nybegynner i C. :)

6967358[/snapback]

 

problemet er neppe hva du har i strengen; men mer det at du ikke kan forutse antall argumenter til funksjonen `writer' .. da må du ta i bruk "tre punktum etter hverandre"

 

det kan hende det holder å nevne man 3 stdarg (om du er uheldig: http://www.die.net/doc/linux/man/man3/stdarg.3.html )

 

..om du fortsatt sliter kan jeg godt paste et "hello world"-eksempel ... :}

 

edit: men ikke helt nå - venter til søndag (event . morra, får se; kan fort være at noen andre svarer før meg) .. hahaha :D -- god helg folk -

Endret av lnostdal
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...