scan a line with numbers and words and just keep the words in c










1














I have a text file that has listed albums and songs.
eg:

Pink Floyd : Dark Side of the Moon

0:01:30 - Speak to Me

0:02:43 - Breathe

0:03:36 - On the Run

0:04:36 - The Great Gig in the Sky



I am using sscanf to get the duration of each song. When I am trying to get the name of the song im just getting a blank page. How can I just discard all the other characters I don't want. So far for the duration I use this:



int temp1,temp2,temp3;
char str[100];
char symbol[2]="-";

FILE *fp;
fp = fopen("albums.txt","r");

if (fp == NULL)
printf("Error: unable to open ‘albums.txt’Report error.in mode ’r’n");
exit(EXIT_FAILURE);



while (fgets(str, 100, fp) != NULL)

if(strstr(str,symbol))

sscanf(str,"%d:%d:%d",&temp1,&temp2,&temp3);
getHour(temp1,temp2,temp3); //temp1:hours, temp2:minutes, temp3:seconds



fclose(fp);









share|improve this question


























    1














    I have a text file that has listed albums and songs.
    eg:

    Pink Floyd : Dark Side of the Moon

    0:01:30 - Speak to Me

    0:02:43 - Breathe

    0:03:36 - On the Run

    0:04:36 - The Great Gig in the Sky



    I am using sscanf to get the duration of each song. When I am trying to get the name of the song im just getting a blank page. How can I just discard all the other characters I don't want. So far for the duration I use this:



    int temp1,temp2,temp3;
    char str[100];
    char symbol[2]="-";

    FILE *fp;
    fp = fopen("albums.txt","r");

    if (fp == NULL)
    printf("Error: unable to open ‘albums.txt’Report error.in mode ’r’n");
    exit(EXIT_FAILURE);



    while (fgets(str, 100, fp) != NULL)

    if(strstr(str,symbol))

    sscanf(str,"%d:%d:%d",&temp1,&temp2,&temp3);
    getHour(temp1,temp2,temp3); //temp1:hours, temp2:minutes, temp3:seconds



    fclose(fp);









    share|improve this question
























      1












      1








      1


      0





      I have a text file that has listed albums and songs.
      eg:

      Pink Floyd : Dark Side of the Moon

      0:01:30 - Speak to Me

      0:02:43 - Breathe

      0:03:36 - On the Run

      0:04:36 - The Great Gig in the Sky



      I am using sscanf to get the duration of each song. When I am trying to get the name of the song im just getting a blank page. How can I just discard all the other characters I don't want. So far for the duration I use this:



      int temp1,temp2,temp3;
      char str[100];
      char symbol[2]="-";

      FILE *fp;
      fp = fopen("albums.txt","r");

      if (fp == NULL)
      printf("Error: unable to open ‘albums.txt’Report error.in mode ’r’n");
      exit(EXIT_FAILURE);



      while (fgets(str, 100, fp) != NULL)

      if(strstr(str,symbol))

      sscanf(str,"%d:%d:%d",&temp1,&temp2,&temp3);
      getHour(temp1,temp2,temp3); //temp1:hours, temp2:minutes, temp3:seconds



      fclose(fp);









      share|improve this question













      I have a text file that has listed albums and songs.
      eg:

      Pink Floyd : Dark Side of the Moon

      0:01:30 - Speak to Me

      0:02:43 - Breathe

      0:03:36 - On the Run

      0:04:36 - The Great Gig in the Sky



      I am using sscanf to get the duration of each song. When I am trying to get the name of the song im just getting a blank page. How can I just discard all the other characters I don't want. So far for the duration I use this:



      int temp1,temp2,temp3;
      char str[100];
      char symbol[2]="-";

      FILE *fp;
      fp = fopen("albums.txt","r");

      if (fp == NULL)
      printf("Error: unable to open ‘albums.txt’Report error.in mode ’r’n");
      exit(EXIT_FAILURE);



      while (fgets(str, 100, fp) != NULL)

      if(strstr(str,symbol))

      sscanf(str,"%d:%d:%d",&temp1,&temp2,&temp3);
      getHour(temp1,temp2,temp3); //temp1:hours, temp2:minutes, temp3:seconds



      fclose(fp);






      c file-io scanf text-files fgets






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 11 at 18:13









      T.ChD

      363




      363






















          1 Answer
          1






          active

          oldest

          votes


















          2














          Test the return value of sscanf() for success. Use "%*d" to scan an int, yet not save. Use "%[^n]" to scan and save all non-'n' characters.



          Code can consume the ''-'` as part of the scan.



          while (fgets(str, sizeof str, fp) != NULL) 
          char title[sizeof str]; // Wide enough for anything from `str`.
          if (sscanf(str, "%*d :%*d :%*d - %[^n]", title) == 1)
          // success
          printf("<%s>n", title);







          share|improve this answer






















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53251731%2fscan-a-line-with-numbers-and-words-and-just-keep-the-words-in-c%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            2














            Test the return value of sscanf() for success. Use "%*d" to scan an int, yet not save. Use "%[^n]" to scan and save all non-'n' characters.



            Code can consume the ''-'` as part of the scan.



            while (fgets(str, sizeof str, fp) != NULL) 
            char title[sizeof str]; // Wide enough for anything from `str`.
            if (sscanf(str, "%*d :%*d :%*d - %[^n]", title) == 1)
            // success
            printf("<%s>n", title);







            share|improve this answer



























              2














              Test the return value of sscanf() for success. Use "%*d" to scan an int, yet not save. Use "%[^n]" to scan and save all non-'n' characters.



              Code can consume the ''-'` as part of the scan.



              while (fgets(str, sizeof str, fp) != NULL) 
              char title[sizeof str]; // Wide enough for anything from `str`.
              if (sscanf(str, "%*d :%*d :%*d - %[^n]", title) == 1)
              // success
              printf("<%s>n", title);







              share|improve this answer

























                2












                2








                2






                Test the return value of sscanf() for success. Use "%*d" to scan an int, yet not save. Use "%[^n]" to scan and save all non-'n' characters.



                Code can consume the ''-'` as part of the scan.



                while (fgets(str, sizeof str, fp) != NULL) 
                char title[sizeof str]; // Wide enough for anything from `str`.
                if (sscanf(str, "%*d :%*d :%*d - %[^n]", title) == 1)
                // success
                printf("<%s>n", title);







                share|improve this answer














                Test the return value of sscanf() for success. Use "%*d" to scan an int, yet not save. Use "%[^n]" to scan and save all non-'n' characters.



                Code can consume the ''-'` as part of the scan.



                while (fgets(str, sizeof str, fp) != NULL) 
                char title[sizeof str]; // Wide enough for anything from `str`.
                if (sscanf(str, "%*d :%*d :%*d - %[^n]", title) == 1)
                // success
                printf("<%s>n", title);








                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Nov 11 at 20:30

























                answered Nov 11 at 20:26









                chux

                80.3k870147




                80.3k870147



























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53251731%2fscan-a-line-with-numbers-and-words-and-just-keep-the-words-in-c%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Use pre created SQLite database for Android project in kotlin

                    Darth Vader #20

                    Ondo