2016-11-09 1 views
-2

Ich lerne gerade zu programmieren und ich weiß nicht, warum mein Code nicht in das geht, denn das ist in der Do.C: Ich gebe "for" statement in do ... while nicht ein

Alle Ideen oder Hilfe wäre unglaublich hilfreich!

#include <stdio.h> 
#include <stdlib.h> 
#include <stdbool.h> 
#include <string.h> 

void swap(char *num1, char *num2) { 
    char temp; 
    temp = *num1; 
    *num1 = *num2; 
    *num2 = temp; 
} 

int main() 
{ 
    int l,i; 
    char s[100]; 
    bool swapped; 

    scanf("%s", s); 
    l=strlen(s); 

    do 
    { 
     swapped = 0; 
     for(i=1;i==(l-1);i++) 
     { 
      if(s[i-1] > s[i]) 
      { 
       swap(&s[i-1],&s[i]); 
       printf("%s\n",s); 
       swapped = 1; 
      }  
     } 
    }while(swapped); 

    // printf("%s\n",s); 

    return 0; 
} 
+2

Sie mit 'i start = 1 ', so' i == (l-1) 'ist wahr, wenn und nur wenn 'l == 2'. Vielleicht meintest du "i <= (l-1)". – user3386109

+0

'i == (l-1)' würde prüfen, ob 'i' _equat_ zu' l-1' ist und sonst nicht in die Schleife eintreten würde. Brauchst du das? – ForceBru

+0

Willkommen bei Stack Overflow. Es scheint so, als müssten Sie lernen, wie Sie einen Debugger verwenden, um Zeile für Zeile durch Ihren Code zu gehen, wodurch Sie wahrscheinlich leicht die Art und den Ort des Problems bestimmen können, das Sie haben. Die Verwendung eines Debuggers ist in jedem Fall das erforderliche Wissen für jeden Programmierer. Weitere Informationen finden Sie unter [Debuggen kleiner Programme] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/). –

Antwort

1

Ihr Vergleich innerhalb der for-Schleife überprüft, ob i gleich den Zeichen in Ihrer Zeichenfolge ist. Sie werden nur die for-Schleife eingeben, wenn dieser Fall wahr ist.

möchten Sie wahrscheinlich die for-Schleife eingeben und dann weiter inkrementieren i überprüfen, um zu sehen, ob es kleiner oder gleich den Zeichen in der Zeichenfolge ist.

Beispielcode

char * str = "Hello" 
for(int i = 0; i <= strlen(str) - 1; i++) 
{ 
    printf("%c", str[i]); 
} 

erwartete Ausgabe

Hello