Why The debuger neglect the while loops?

This is a program that delete spaces in the beginning and the end of a string c, can you tell me please where is the error in it ?
I already tried running it in the debuger. It seems that the while loops aren’t executed, kind of neglecting.

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
void main()
    char c[1000],d[1000];
    int i=0,j=strlen(c)-1;
    while (c[i]==" ")
    while (c[j]==" ")
    int k,l=0;
    for (k=i;k<=j;k++)

>Solution :

You should use single quotes to get a space character in C. If you use double quotes, you get a pointer to a string containing a space character and a null terminator, which is different.

So change " " to ' '.

Your compiler should have warned you about this, since you are comparing a char to a const char *. Indeed, when I compile your code in gcc with the default options, it says:

test.c: In function 'main':
test.c:10:16: warning: comparison between pointer and integer
   10 |     while (c[i]==" ")
      |                ^~
test.c:14:16: warning: comparison between pointer and integer
   14 |     while (c[j]==" ")
      |                ^~

Your programming journey will be much easier if you pay attention to compiler warnings and fix them. You can also pass options like -Wall to your compiler to make it give you more warnings.

Also you need to add a null terminator to your d string. So add this line after the last loop:

d[l] = 0;

Leave a Reply