DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C (http://www.daniweb.com/forums/forum118.html)
-   -   scanning char array for \0 problem (http://www.daniweb.com/forums/thread105789.html)

Matt You Jan 22nd, 2008 3:22 pm
scanning char array for \0 problem
 
I'm trying to make a function that can scan a char array, and finish it's business when it comes to a '\0'. so here is the for loop i came up with:
for( i=0 ; charArray[i] != '\0' ; i++ )
But here is an example of entered data: "1234 432"

It seems to end the loop at the space. So are spaces and null characters similar? how can i differentiate between the two so that it keeps going right through a space and only stops at a null?

Narue Jan 22nd, 2008 3:31 pm
Re: scanning char array for \0 problem
 
>So are spaces and null characters similar?
No, not at all.

>how can i differentiate between the two
You don't need to differentiate between the two. You need to figure out why your code is stopping when you don't think it should. We can help, but you need to post more code. Preferably a complete program that exhibits the problem.

Matt You Jan 22nd, 2008 4:05 pm
Re: scanning char array for \0 problem
 
here ya go:
#include <stdio.h>

int dummy;

int stringSplitter(char arrayToSplit[], int arraySize);

int main()
        {
        char userString[20];

        printf("Enter 3 numbers, seperated by spaces: ");
        scanf( "%s", userString);
       
        stringSplitter(userString, 20);
       
    scanf("%d", dummy);
    }

int stringSplitter(char arrayToSplit[], int arraySize)
        {
        unsigned int i;

        for( i=0 ; arrayToSplit[i]!='\0' ; i++ )
                {
                printf("%c", arrayToSplit[i]);                       

                }       

        }

Duoas Jan 22nd, 2008 4:28 pm
Re: scanning char array for \0 problem
 
Ah, the loop ends at the space because the string ends at the space. scanf stops reading input at spaces. So when you enter "1234 432" the userString gets "1234", and " 432" is left waiting to be read.

If you want to get a string from the user try using fgets().

Good luck.

Matt You Jan 22nd, 2008 6:31 pm
Re: scanning char array for \0 problem
 
Quote:

Originally Posted by Duoas (Post 515724)
Ah, the loop ends at the space because the string ends at the space. scanf stops reading input at spaces. So when you enter "1234 432" the userString gets "1234", and " 432" is left waiting to be read.

If you want to get a string from the user try using fgets().

Good luck.

Thank you! I never would have figured that out. It all works the way it should now.


All times are GMT -4. The time now is 3:25 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC