ungewollte Endlosschleife



  • In diesem Programm gibt es eine ungewollte Endlosschleife.
    Ich habe die Schleifen durch printfs "markiert", kann aber trotzdem den Grund für die Endlosschleife nicht feststellen.
    Ich bitte euch, mir das Problem zu erklären:

    #include <stdio.h>
    
    char string [100];
    
    void shiftstring(char begin, char end)
    {
    	if(0<=begin<=end<96)
    	{
    		char target;
    		target=end+3;
    		while(target>=begin+3)
    		{
    			printf("2");
    			string[target]=string[target-3];
    			--target;
    		}
    	}
    	else
    	{
    		printf("Error!");
    		exit(1);
    	}
    }
    
    int main()
    {
    	scanf("%25s", string);
    	string[99]=0;
    	char end = 24;
    	char target = 0;
    	while(target<end<96)
    	{
    		printf("1");
    		if(target=='\t')
    		{
    			shiftstring(target,end);
    			end+=3;
    			char i;
    			i=target+3;
    			while(target<=i)
    			{
    				printf("3");
    				string[target]=' ';
    				target++;
    			}
    		}
    		else
    			target++;
    	}
    	printf("%s",string);
    	scanf("%c",&target);
    	return 0;
    }
    


  • sry, dass ich chars anstatt ints benutze



  • Deine Bedingungen in den if- und while-Anweisungen sind (semantisch) falsch:

    if (0<=begin<=end<96)
    
    while(target<end<96)
    

    Was möchtest du denn umgangssprachlich damit ausdrücken?
    Ob begin und end jeweils im Bereich von 0 bis 95 liegen?
    Dann müßtest du folgendes schreiben:

    if (0<=begin && begin<96 && 0<=end && end<96)
    

    Deine Kurzformen gibt es so in C (und C++) nicht, sondern müssen explizit durch den logischen Operator && (und) ausgedrückt werden.


Log in to reply