Search code examples
c++pointersstrncpy

Can you change the size of what a pointer point to


For example if a pointer points to an array of chars that read "Hello how are you?" And you only want the pointer to point to Hello. I am passing in a char pointer and when I cout it, it reads the entire array. I try to cut down the size using a for loop that break when it hit a ' '. But I am not having luck figuring it out. Any ideas?

const char *infile(char * file )
{
    cout<<file<<endl;  //this prints out the entire array
    int j;
    for(j=0;j<500; j++)
    {
        if(file[j]==' ')
           break;
    }
    strncpy(file, file,  j);
    cout<<file<<endl;  //how to get this to print out only the first word
}

Solution

  • strncpy() does not append a null terminator if there isn't one in the first j bytes of your source string. And your case, there isn't.

    I think what you want to do is manually change the first space to a \0:

    for (j = 0; j < 500; j++) {
      if (file[j] == ' ') {
        file[j] = '\0';
        break;
      }
    }