Toon posts:

[C] char lengte+opsplitsen

Pagina: 1
Acties:

Verwijderd

Topicstarter
hey,

ik ben een progje aan het maken die een string binnenkrijgt, en die dan in vars propt met per var 2 letters. Dan moet ik dus eerst kijken uit hoeveel tekens een char bestaat en dan de eerste 2 tekens in een var proppen, hoe doe ik dat?
code:
1
2
3
4
5
6
char bla[2];
for(x=0;x<lengte_van_char_/_2; x++)
{

   bla = input[1,2]
}

zoiets?

  • The End
  • Registratie: Maart 2000
  • Laatst online: 15-09 13:52

The End

!Beginning

uuuhhhmm...
Een char heeft de lengte 1 (Er zit altijd een character in een char)
Een string is een array van chars.
Waar wil je de chars instoppen?

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

Je klinkt een beetje wazig...
Een char is altijd 1 char lang.

Maar waarschijnlijk zoek je de functie strlen() :?

[edit:]
Het handigst kun je waarschijnlijk een array maken, iets van:
lijstje[MAX_STR_LENGTH / 2][2]

Verwijderd

Topicstarter
en per 2 chars stuurt hij ze naar een functie die dan een letter retourneerd. Vervolgends wil ik alle letters achter mekaar in een char. hoe doe ik dat?
code:
1
2
3
4
for(x=0;x<lengte_van_char_/_2;x++)
{
   output = functie(input);
}

maar dan dat als dat 10 keer gedaan word, de waardes allemaal in die char gezet worden.

Verwijderd

Topicstarter
Op woensdag 06 februari 2002 11:06 schreef The End het volgende:
uuuhhhmm...
Een char heeft de lengte 1 (Er zit altijd een character in een char)
Een string is een array van chars.
Waar wil je de chars instoppen?
dat bedoelde ik sorry :P

  • The End
  • Registratie: Maart 2000
  • Laatst online: 15-09 13:52

The End

!Beginning

Maar wat wil je nou wat er gebeurd?

Verwijderd

Topicstarter
een string komt binnen, die word opgesliptst in een string per 2 char, dwz:

de string: 'hallo hoestie?' geeft de eerste keer in de for lus:

ha

2e keer:

ll

enz....
(in die for lus word er wat meergedaan) maar om te weten hoe vaak de for lus moest gaan moest ik de lengte van de string weten. en ik wil nu dat de output van een functie in 1 string word geplaatste:

voorbeeld: 1e keer geeft ie: a, 2e keer: b, 3e keer c:

dan word de string: abc

snap je wat ik bedoel?

  • The End
  • Registratie: Maart 2000
  • Laatst online: 15-09 13:52

The End

!Beginning

Wat voor omgeving gebruik je om te programmeren?
Om de lengte van een string te bepalen kan je de functie "strlen" gebruiken.

Verwijderd

Topicstarter
ik typ in emacs (linux text editor) en compile met gcc

  • Pooh
  • Registratie: April 2001
  • Niet online

Pooh

Lees eens een boek

wat is je probleem nu?
code:
1
2
3
4
5
6
7
8
9
10
stringetje a = bronstring
stringetje b = doelstring
---

int i = 0;

for(i=0;i<strlen(a)/2;i++) 
{
  b[i] = functie(a[2*i-1], a[2*i]);
}



en dan even zorgen dattie het goed doet met stringen van even en oneven lengte... ;)

Verwijderd

Topicstarter
Op woensdag 06 februari 2002 11:53 schreef Poohbear het volgende:
wat is je probleem nu?
code:
1
2
3
4
5
6
7
8
9
10
stringetje a = bronstring
stringetje b = doelstring
---

int i = 0;

for(i=0;i<strlen(a)/2;i++) 
{
  b[i] = functie(a[2*i-1], a[2*i]);
}



en dan even zorgen dattie het goed doet met stringen van even en oneven lengte... ;)
nee, zo werkt het niet. in de for lus word telkens dezelfde var(bla) opnieuw gevult met tlekens 2 andere letters. die worden naar een funcoite gestuurt en alles wat terug komt(dus niet alleen van die 1e loop maar van allemaal) moeten in 1 string.

dus zoiets:
code:
1
2
3
4
5
6
for(x=1;x<strlen(input);x+2)
{
   bla = input[x] & input[x+1];
   bloep = functie(bla);
   output = output & bloep;
}

Verwijderd

Topicstarter
ik heb nu dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void funktie(char *bits)
{
  int x;
  int y;
  char in;
  char uit;
  y = strlen(input);

  for(x=0;x<y;x+2)
    {
    in = input[x] && input[x+1];
    uit = uit && char(iets(in));
     
    }
  volgende(uit);
  
}

maar als ik um compieler zegt ie dit:
code:
1
2
3
4
test.c: In function `funktie':
test.c:14: parse error before "char"
test.c: In function `main':
test.c:52: parse error before "char"

de fout zit dus in
code:
1
2
3
4
5
uit = uit && char(iets(in));

en

input2 = char(input);

hoe kan ik dat verbeteren? de input is een int en daar wil ik een char van maken, dat moest toch zo?

  • DarkMatters
  • Registratie: Januari 2002
  • Laatst online: 13-09 07:12
Converteren van int naar char kan als volgt:
code:
1
2
3
4
int input = 34;
char out;

out = (char) input;

Verwijderd

Topicstarter
dan krijg ik dit:
code:
1
2
test.c: In function `main':
test.c:52: warning: assignment makes pointer from integer without a cast

en wanneer ik het progje start krijg ik op het punt dat ie met die regels bezit moet zijn een segmentation fault, iemand enig idee hoe dit moet? :?

Verwijderd

Topicstarter
iemand?

Verwijderd

Topicstarter
heeft iemand enig id?

Verwijderd

Topicstarter
tis misschien niet helemaal duidelijk wat ik wil, ik wil dus:

• meerdere strings in 1 string gooien
• int naar char converteren

  • Orphix
  • Registratie: Februari 2000
  • Niet online
check de functies strcpy() (of strncpy) en itoa()

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op woensdag 06 februari 2002 13:47 schreef Sacrine het volgende:
dan krijg ik dit:
code:
1
2
3
test.c: In function `main':
test.c:52: warning: assignment makes pointer from integer
without a cast

en wanneer ik het progje start krijg ik op het punt dat ie met die regels bezit moet zijn een segmentation fault, iemand enig idee hoe dit moet? :?
lijkt me stug dat je dat krijgt. Als je het wel krijgt heb je waarschijnlijk char * out ipv char out gedaan

maar even naar je vorige stukje code, wat bedoel je te doen met
code:
1
in = input[x] && input[x+1];

:?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op woensdag 06 februari 2002 20:06 schreef OiSyN het volgende:
maar even naar je vorige stukje code, wat bedoel je te doen met
code:
1
in = input[x] && input[x+1];
concateneren :) (is dat goed nederlands?)

Ik gaf je dan ook beetje verkeerde oplossing, ipv strcpy kan je beter strcat() gebruikern; deze plakt twee strings aan elkaar en dat is wat jij wil.

Verwijderd

Topicstarter
Op woensdag 06 februari 2002 20:06 schreef OiSyN het volgende:

[..]

lijkt me stug dat je dat krijgt. Als je het wel krijgt heb je waarschijnlijk char * out ipv char out gedaan

maar even naar je vorige stukje code, wat bedoel je te doen met
code:
1
in = input[x] && input[x+1];

:?
dat de string in gevuld word met char 1 en 2 van de string input

Verwijderd

Topicstarter
Op woensdag 06 februari 2002 20:21 schreef Orphix het volgende:

[..]

concateneren :) (is dat goed nederlands?)

Ik gaf je dan ook beetje verkeerde oplossing, ipv strcpy kan je beter strcat() gebruikern; deze plakt twee strings aan elkaar en dat is wat jij wil.
dus:

in = strcat(input[1], input[2]);

ofzo?

  • _Squatt_
  • Registratie: Oktober 2000
  • Niet online
check 'man strcat', daar staat hoe je die functie gebruikt.

"He took a duck in the face at two hundred and fifty knots."


Verwijderd

Topicstarter
Op woensdag 06 februari 2002 20:06 schreef OiSyN het volgende:

[..]

lijkt me stug dat je dat krijgt. Als je het wel krijgt heb je waarschijnlijk char * out ipv char out gedaan

maar even naar je vorige stukje code, wat bedoel je te doen met
code:
1
in = input[x] && input[x+1];

:?
maar het moet zo dat out meer dan 1 teken kan bevatten, daarvoor was toch dat * ?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

ja maar is input gewoon niet een array van chars?

dan is het gewoon
in[0] = input[x];
in[1] = input[x+1];

maar dan moet in wel een array zijn van tenminste 2 chars, en waarschijnlijk wil je er ook nog een terminating null chararcter achter hebben (in[2] = 0 dus)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Sacrine: volgens mij is het beter als je eerst even een goed boek/tutorial/whatever door gaat lezen over C, want dit wordt natuurlijk niets zo :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
ik heb nog geen goed boeke gevonden, ze gaan allemaal zo langzaam. Ik zoek er een die alles kort en krachtig uitlegd

Verwijderd

Topicstarter
het werkt nagenoeg, ik krijg nu een segfault bij:

y = strlen(input);

input is een char *

hoe kan ik dit oplossen?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

wat is input op het moment dat je strlen doet?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • _Squatt_
  • Registratie: Oktober 2000
  • Niet online
Op woensdag 06 februari 2002 20:55 schreef Sacrine het volgende:
ik heb nog geen goed boeke gevonden, ze gaan allemaal zo langzaam. Ik zoek er een die alles kort en krachtig uitlegd
Ik heb gewoon het C handboek van Kernighan&Ritchie gelezen. Las lekker makkelijk weg, niet al te dik. En daar worden dingen als dit prima in uitgelegd.

Zoek anders ff op internet naar een tutorial over C en lees het hoofdstuk over strings even. (Of de hele tutorial :+ )

"He took a duck in the face at two hundred and fifty knots."


Verwijderd

Topicstarter
Op woensdag 06 februari 2002 21:07 schreef OiSyN het volgende:
wat is input op het moment dat je strlen doet?
op dat moment is de input 2 cijfers, ligt het daaraan?

Verwijderd

Topicstarter
huh? ik krijg een segfault bij de scanf: ik kan getallen niet in eenchar stoppen? kan die alleen maar text bevatten ofzo? :?

  • Tomatrix
  • Registratie: Juni 1999
  • Laatst online: 27-02-2025
Op donderdag 07 februari 2002 10:35 schreef Sacrine het volgende:
huh? ik krijg een segfault bij de scanf: ik kan getallen niet in eenchar stoppen? kan die alleen maar text bevatten ofzo? :?
Het is al eerder gezegd, maar nogmaals, lees eens een boek.

Verwijderd

Topicstarter
Op donderdag 07 februari 2002 10:51 schreef Tomatrix het volgende:

[..]

Het is al eerder gezegd, maar nogmaals, lees eens een boek.
ja, daar heb je gelijk in :P weet iemand een goed online boek? bij de bieb hebben ze niets :(
Pagina: 1