Avatar billede dr.truti Nybegynder
11. januar 2004 - 16:42 Der er 11 kommentarer og
1 løsning

sammenkobling af 2 variabler

Jeg har programmeret C/C++ for nogen tid nu, man har aldrig fundet ud af om hvordan man laver en "sammenkobling".

Skrevet the-php-way:
char test = " på exp.dk ";
char blah = "Dette er en test" . test . "!";

Resultatet:
"Dette er en test på exp.dk !"

Hvordan gør jeg dette med C?
Avatar billede akany_ Nybegynder
11. januar 2004 - 16:51 #1
#include <iostream>
#include <cstdlib>
#include <string.h>
using namespace std;


int main()
{
    char a[10]="hej "; // Der skal være plads til begge
    char b[]="hej";
    strcat(a, b);
    cout<<a<<endl;
    system("pause");
    return 0;
}
Avatar billede akany_ Nybegynder
11. januar 2004 - 16:52 #2
Mit output er osv. er lavet til C++ men strcat(); og string.h er C
Avatar billede dr.truti Nybegynder
11. januar 2004 - 16:54 #3
arr..! Jeg kunne ikke se skoven for bare træer.
Avatar billede dr.truti Nybegynder
11. januar 2004 - 16:54 #4
Opret Svar!
Avatar billede akany_ Nybegynder
11. januar 2004 - 16:55 #5
strcat() der er i string.h tager 2 char arrays som argument. Disse 2 vil så blive samlet i det du skrev først.

  Og så lige en rettelse til ovenstående kode:

#include <iostream>
#include <cstdlib>
#include <string.h>
using namespace std;


int main()
{
    char a[]="hej ";
    char b[]="hej";
    strcat(a, b);
    cout<<a<<endl;
    system("pause");
    return 0;
}

Du behøver ikke angive en størrelse på det array det hele skal samles i ser det ud til.
Avatar billede akany_ Nybegynder
11. januar 2004 - 16:55 #6
svar
Avatar billede arne_v Ekspert
11. januar 2004 - 16:58 #7
Brug akanys første løsning - den anden løsning forkert og vil kunne
give meget grimme overskrvings fejl !
Avatar billede arne_v Ekspert
11. januar 2004 - 17:09 #8
#include <iostream>
#include <string>

#include <cstdlib>
#include <cstring>

using namespace std;

void cgood()
{
  char a[10] = "abc";
  char b[] = "def";
  strcat(a, b);
  cout << a << endl;
  cout << b << endl;
}

void cbad1()
{
  char a[] = "abc";
  char b[] = "def";
  strcat(a, b);
  cout << a << endl;
  cout << b << endl;
}
void cbad2()
{
  char b[] = "def";
  char a[] = "abc";
  strcat(a, b);
  cout << a << endl;
  cout << b << endl;
}

void cpp()
{
  string a = "abc";
  string b = "def";
  a += b;
  cout << a << endl;
  cout << b << endl;
}


int main()
{
  cgood();
  cbad1();
  cbad2();
  cpp();
  return 0;
}
Avatar billede akany_ Nybegynder
11. januar 2004 - 17:10 #9
Nå så havde jeg ret. Testede bare anden og det gik godt så... Men mente nok første var mest rigtig
Avatar billede arne_v Ekspert
11. januar 2004 - 17:10 #10
Output fra cbad1 og cbad2 er principielt unpredictable men GCC 3.1 og BCB 5.5
giver:

abcdef
def
abcdef
def
abcdef
ef
abcdef
def
Avatar billede akany_ Nybegynder
11. januar 2004 - 17:24 #11
Tog nok en lidt forhastet konklusion, da det gik godt den ene gang jeg testede anden kode.
Så passer alt det med den første indskydelse endnu engang :)
Avatar billede dr.truti Nybegynder
11. januar 2004 - 18:10 #12
Det var nu mere funktionen "strcat" jeg midlertidig have glemt, akany gav mig finger peget jeg manglede.. Tak...
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