Problem mit einem String



  • moin ich hab ein Problem mit nem String.

    Immer wenn ich versuche so auf den Server zu Connecten geht der Client einfach zu.

    string ip;
    
      printf("IP eingeben: ");
      scanf ("%d",&ip);
    
      memset(&addr,0,sizeof(SOCKADDR_IN));
      addr.sin_family=AF_INET;
      addr.sin_port=htons(12345);
      addr.sin_addr.s_addr=inet_addr("%d"),ip;
    

    Aber wenn ich z.b. in diese Zeile die IP eingebe.

    addr.sin_addr.s_addr=inet_addr("127.0.0.1"),ip;

    dann geht es.

    Aber wenn ich es mit einer Eingabe machen will dann schließt sich der Client einfach .....



  • roflcopter incoming schrieb:

    moin ich hab ein Problem mit nem String.

    Immer wenn ich versuche so auf den Server zu Connecten geht der Client einfach zu.

    string ip;
    
      printf("IP eingeben: ");
      scanf ("%d",&ip);
    
      memset(&addr,0,sizeof(SOCKADDR_IN));
      addr.sin_family=AF_INET;
      addr.sin_port=htons(12345);
      addr.sin_addr.s_addr=inet_addr("%d"),ip;
    

    addr.sin_addr.s_addr=inet_addr("%d"),ip; ??? erst lesen, dann verstehen 😉 hier handelt sich um keine printf Funktion. Die Konstruktion inet_addr("%d"),ip; sagt nicht, ersetze %d durch den Inhalt von ip. Wie gesagt, wo ist das (s)printf?

    Bei inet_addr("127.0.0.1"),ip; geht natürlich, da "127.0.0.1" eine gültige IP Adresse ist.

    Außerdem ist deine IP Eingabe falsch. scanf("%d") liest eine Zahl, keine Zeichenkette.



  • Wie kann ich den eine Zeichenkette einlesen ?



  • Ich habs geschafft 🙂

    char ip[20];
    
      printf("IP eingeben: ");
      gets (ip);
    
      memset(&addr,0,sizeof(SOCKADDR_IN)); 
      addr.sin_family=AF_INET;
      addr.sin_port=htons(12345);
      addr.sin_addr.s_addr=inet_addr(ip);
    


  • gets sollte man nie verwenden, sondern man: fgets(3)


Anmelden zum Antworten