[BEGINNER] char en char* bij elkaar voegen

Status
Niet open voor verdere reacties.

mickvdv

Gebruiker
Lid geworden
20 nov 2006
Berichten
14
Hallo

Ik ben net een half uurtje bezig met c++. Ik heb enige programmeer ervaring met pyton en basic en ik d8 laat ik nu eens aan het echte werk beginnen.

Nu heb ik een probleempje, ik probeer een programma te schrijven dat automatisch mijn netgeschreven progje compileert en uitvoert. Gewoon om ff te oefenen:

Code:
#include <iostream> 
#include <string.h>

#include <math.h>
//math heb je nodig voor sqrt()

#include <stdlib.h> //header voor standard library

#include <iostream> 
// iostream voor argv

using namespace std;


// autocompile proggie, usage -->
// autocomp dingus.cpp

// zo doe je argv:
// int main(int argc, char* argv[])
// argv[1] is het eerste woord

int main(int argc, char* argv[])
{
cout <<"Autocomp v1" <<endl;
cout <<argv[1] << endl;


char tocompile, output;
tocompile = argv[1];
output = argv[1] + ".c";

system("gcc +o "+output+" "+tocompile);
system("./"+output);
return 0;
}

Als ik hem nu compileer met gcc krijg ik:

Code:
mickvdv@desktop2:~/Scripts/c++$ g++ -o autocomp autocomp.cpp 
autocomp.cpp: In function ‘int main(int, char**)’:
autocomp.cpp:28: interne fout invalid conversion from ‘char*’ to ‘char’
autocomp.cpp:29: interne fout invalid operands of types ‘char*’ and ‘const char [3]’ to binary ‘operator+’
autocomp.cpp:31: interne fout invalid operands of types ‘const char*’ and ‘const char [2]’ to binary ‘operator+’

Wat doe ik hier fout?

Mickvdv
 
Een char kan maar één character bevatten. Een 'char *' is een array van chars, en kan aldoende dus een tekenreeks bevatten.

(verder zou ik gewoon gebruik maken van een string(std::string) en daarmee het commando samenstellen. En wanneer je het dan wilt uitvoeren doe je -> system(string_naam.c_str());)
 
Dus ik moet:

char* tocompile, output;

doen. Maar dan krijg ik nog een fout in de regel:

output = argv[1] + ".c";
 
Dus ik moet:

char* tocompile, output;

doen. Maar dan krijg ik nog een fout in de regel:

output = argv[1] + ".c";

Waarom geen string gebruiken ?

Code:
std::string cmd = "gcc +o " + std::string(argv[1]) + ".c " + std::string(argv[1]);
system(cmd.c_str());

(verder zou ik ook eerst controleren of er wel een argument wordt opgegeven ;))

edit:

Code:
char* tocompile, output;

In dit geval is tocompile een pointer-to-char en output is een gewone char.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan