Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C/ Merkkijonon yhdistäminen

solaris83 [03.10.2009 18:12:27]

#

Terve heitin tämmösen peruskysmyksen ku itelläni tuli ongelma. Eli tosiaan C ohjelmointia olen harjottelemassa , koulun puolesta pari projektia. Eli ongelmani on että functiolla strcat saa yhdistettyä merkkijonot. Mutta tahtoisin tehä sen vaikeemman kautta. Eli miten yhdistetään for loopilla kaksi merkkijonoo Esim. Jos muuttujat on char tyyppisiä , ja se kysyy käyttäjältä etunimen ja sukunimen, ja tulostuksen jälkeen olis nimi yhdistettynä.

Jalmari91 [03.10.2009 18:24:30]

#

Varaat kolmannelle muuttujalle tilaa, niin paljon, että kumpikin mahtuu ja sitten vaan yhdistät ne siihen kolmanteen muuttujaan ja mahdollisesti vapautat kaksi muuta muuttujaa.

Metabolix [03.10.2009 18:30:43]

#

Tiedätkin ehkä, että merkkijono on taulukollinen char-arvoja (siis EI char-tyyppinen vaan char[n]-tyyppinen, missä n on taulukon koko) ja merkkijonon loppua merkitään arvolla 0 (sen sijaan merkki '0' olisi ASCII-arvoltaan 48).

Näiden tietojen perusteella on helppo toteuttaa oma strcat-funktio.

#include <stdio.h>

char *strcat(char *dest, const char *src) {
  int i0, i;
  /* Haetaan alkuperäisen tekstin loppu (nollamerkki). */
  /* i0 = 0; while (dest[i0] != 0) ++i0; */
  for (i0 = 0; dest[i0]; ++i0);
  /* Kopioidaan toista tekstiä, kunnes siinäkin tulee loppu (nollamerkki). */
  /* for (i = 0; src[i] != 0; ++i) { */
  for (i = 0; src[i]; ++i) {
    dest[i0 + i] = src[i];
  }
  /* Laitetaan loppuun uusi nollamerkki. */
  dest[i0 + i] = 0;
  return dest;
}

int main() {
  char a[10] = "moi";
  char b[10] = "kka";
  strcat(a, b);
  puts(a); /* "moikka" */
  return 0;
}

solaris83 [03.10.2009 18:37:02]

#

Kiitoksia paljon neuvoista , nyt pääsen eteenpäin tosta oli paljon apua.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta