Kommandozeilenparameter mit c
-
ich hab folgendes problem:
das Programm welches hier steht:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"tausche.h"int main(int argc, char* argv[])
{
if(argc!=2)
{
perror("aufruf: Bitte nur eine Zahl eingeben \n");
}char zahl1[MAXDIM];
char zahl2[MAXDIM];
int i;zahl1[MAXDIM]=(argv[1]);
for(i=0;i<=MAXDIM;i++)
zahl2[i]=zahl1[i];printf("%s",zahl2);
zahl2[0]=zahl1[strlen(zahl1)-1];
zahl2[strlen(zahl2)-1]=zahl1[0];
printf("%s",zahl2);
return 0;}
liest von der kommandozeile einen string ein und gibt in dann aus aber erstes und letzes element vertauscht
compiler bringt fehlermeldung dass er char *argv nicht in char[MAXDIM] setzen kann bitte um Hilfe auch andere lösungsvorschläge wenn möglich
-
Strings kopieren tut man eigentlich mit strcpy
-
Hallo Hepi das mit dem stringocpy stimmt was du gesagt hast aber die implementierung vo strcpy ist wie ich es geschrieben habe doch das ist nicht das problem !
das problem ist die übergabe vom main ins programm da ich den aufruf des programms in der eingabeaufforderung starte!"
-
Da:
zahl1[MAXDIM]=(argv[1]);
liegt der Hund begraben. Du versuchst, einem char einen char* zuzuweisen, was natürlich nicht hinhaut.
-
und wie mach ich das damit es funtioniet?
Bitte um lösungsvorschläge!!
-
aki76 schrieb:
liest von der kommandozeile einen string ein und gibt in dann aus aber erstes und letzes element vertauscht
char str[1000];//genug speicher anlegen tun strcpy(str,argv[1]);//argv[1] reinkopieren tun { char* erstes=argv[1][0];//erstes zeichen finden tun char* letztes=argv[1][0]+strlen(argv[1][0])-1;//letztes zeichen finden tun char tmp=*erstes;//dreieckstausch machen *erstes=*letzes; *letzes=tmp; } puts(str);;ausgabe machen
-
volkard schrieb:
puts(str);;ausgabe machen
Da fehlt ein "tun"
-
interpreter schrieb:
volkard schrieb:
puts(str);;ausgabe machen
Da fehlt ein "tun"
das "tun" tut man nicht brauchen, wenn man den satz mit "machen" machen kann.