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.


Anmelden zum Antworten