Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. C++ program to print the path without the file name!

C++ program to print the path without the file name!

Scheduled Pinned Locked Moved C / C++ / MFC
c++
20 Posts 6 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C CPallini

    And what is the question? :)

    If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
    This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
    [My articles]

    K Offline
    K Offline
    ksaw123
    wrote on last edited by
    #7

    How can I print the path without the base filename

    C 1 Reply Last reply
    0
    • K ksaw123

      it is C/C++ program not vasuil C++

      D Offline
      D Offline
      David Crow
      wrote on last edited by
      #8

      Use PathRemoveFileSpec() or _splitpath().

      "Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown

      "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

      K 1 Reply Last reply
      0
      • D David Crow

        Use PathRemoveFileSpec() or _splitpath().

        "Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown

        "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

        K Offline
        K Offline
        ksaw123
        wrote on last edited by
        #9

        Which .h file those functions is in?

        D 1 Reply Last reply
        0
        • K ksaw123

          Which .h file those functions is in?

          D Offline
          D Offline
          David Crow
          wrote on last edited by
          #10

          See here.

          "Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown

          "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

          K 1 Reply Last reply
          0
          • D David Crow

            See here.

            "Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown

            "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

            K Offline
            K Offline
            ksaw123
            wrote on last edited by
            #11

            my boss I don't want to use Microsoft C++ , I am using the lagacy C/C++ actually , my code is working but i wanna print the path without the file name as your suggested function. Thanks

            D 1 Reply Last reply
            0
            • K ksaw123

              How can I print the path without the base filename

              C Offline
              C Offline
              CPallini
              wrote on last edited by
              #12

              The code you posted does it. :)

              If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
              This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
              [My articles]

              K 1 Reply Last reply
              0
              • C CPallini

                The code you posted does it. :)

                If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
                This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
                [My articles]

                K Offline
                K Offline
                ksaw123
                wrote on last edited by
                #13

                the code i posted prints the base file name not the path I want to print the path without file name

                C C 2 Replies Last reply
                0
                • K ksaw123

                  my boss I don't want to use Microsoft C++ , I am using the lagacy C/C++ actually , my code is working but i wanna print the path without the file name as your suggested function. Thanks

                  D Offline
                  D Offline
                  David Crow
                  wrote on last edited by
                  #14

                  You might want to consider strrchr() to find the last backslash. Put a '\0' character there.

                  "Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown

                  "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

                  1 Reply Last reply
                  0
                  • K ksaw123

                    it didn't work I need to print the path without the baseile name

                    C Offline
                    C Offline
                    chandu004
                    wrote on last edited by
                    #15

                    this logic worked for me perfectly.

                    const char \* path = "/work1/data/xxxx/yyy/file\_name.txt";
                    char path1\[256\];
                    strcpy(path1,path);//copying the char array
                    cout << path <<"\\n";//this prints the whole filename with path.
                    int l=strlen(path);//finding the length of the path
                    for(int i=l;i>0;i--)//reverse traversing the array
                    {
                    	if(path1\[i\]=='/')//if '/' is found, then replacing it with '\\0'.
                    	{
                    		path1\[i\]='\\0';
                    		break;
                    	}
                    }
                    cout << path1<<"\\n";//this prints only the path.
                    

                    the output is as you desired.

                    -------------------------------------------- Suggestion to the members: Please prefix your main thread subject with [SOLVED] if it is solved. thanks. chandu.

                    K L 2 Replies Last reply
                    0
                    • K ksaw123

                      the code i posted prints the base file name not the path I want to print the path without file name

                      C Offline
                      C Offline
                      chandu004
                      wrote on last edited by
                      #16

                      see here http://www.codeproject.com/Messages/3118524/Re-Cplusplus-program-to-print-the-path-without-the-file-name.aspx[^] and also try with the David crow's recent post that would be easier than mine.

                      -------------------------------------------- Suggestion to the members: Please prefix your main thread subject with [SOLVED] if it is solved. thanks. chandu.

                      1 Reply Last reply
                      0
                      • C chandu004

                        this logic worked for me perfectly.

                        const char \* path = "/work1/data/xxxx/yyy/file\_name.txt";
                        char path1\[256\];
                        strcpy(path1,path);//copying the char array
                        cout << path <<"\\n";//this prints the whole filename with path.
                        int l=strlen(path);//finding the length of the path
                        for(int i=l;i>0;i--)//reverse traversing the array
                        {
                        	if(path1\[i\]=='/')//if '/' is found, then replacing it with '\\0'.
                        	{
                        		path1\[i\]='\\0';
                        		break;
                        	}
                        }
                        cout << path1<<"\\n";//this prints only the path.
                        

                        the output is as you desired.

                        -------------------------------------------- Suggestion to the members: Please prefix your main thread subject with [SOLVED] if it is solved. thanks. chandu.

                        K Offline
                        K Offline
                        ksaw123
                        wrote on last edited by
                        #17

                        sorry, it didn't work why? look at the way you are using strcpy() function

                        C 1 Reply Last reply
                        0
                        • K ksaw123

                          sorry, it didn't work why? look at the way you are using strcpy() function

                          C Offline
                          C Offline
                          chandu004
                          wrote on last edited by
                          #18

                          ksaw123 wrote:

                          look at the way you are using strcpy() function

                          whats the problem?

                          -------------------------------------------- Suggestion to the members: Please prefix your main thread subject with [SOLVED] if it is solved. thanks. chandu.

                          1 Reply Last reply
                          0
                          • K ksaw123

                            the code i posted prints the base file name not the path I want to print the path without file name

                            C Offline
                            C Offline
                            CPallini
                            wrote on last edited by
                            #19

                            you're right:

                            const char * path ="/work1/data/xxxx/yyy/file_name.txt";
                            char * basename;
                            char * filename;

                            basename = _strdup(path);
                            if ( !basename){/*handle error*/}

                            filename = basename+strlen(basename);

                            while (filename != basename && *(filename) != '/')
                            filename--;

                            if ( filename != basename)
                            {
                            *(filename+1)='\0';
                            }
                            else
                            *basename='\0';

                            printf("%s\n", basename);
                            free(basename); /* REMEMBER TO FREE */

                            :)

                            If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
                            This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
                            [My articles]

                            1 Reply Last reply
                            0
                            • C chandu004

                              this logic worked for me perfectly.

                              const char \* path = "/work1/data/xxxx/yyy/file\_name.txt";
                              char path1\[256\];
                              strcpy(path1,path);//copying the char array
                              cout << path <<"\\n";//this prints the whole filename with path.
                              int l=strlen(path);//finding the length of the path
                              for(int i=l;i>0;i--)//reverse traversing the array
                              {
                              	if(path1\[i\]=='/')//if '/' is found, then replacing it with '\\0'.
                              	{
                              		path1\[i\]='\\0';
                              		break;
                              	}
                              }
                              cout << path1<<"\\n";//this prints only the path.
                              

                              the output is as you desired.

                              -------------------------------------------- Suggestion to the members: Please prefix your main thread subject with [SOLVED] if it is solved. thanks. chandu.

                              L Offline
                              L Offline
                              Lost User
                              wrote on last edited by
                              #20

                              You don't need to parse. Use SHString apis.

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • World
                              • Users
                              • Groups