How to take inputs argument separated by commas in C command line? [closed]












-3














(C Program) I need help on an assignment where I must take an input from the command line in the format cmd1,cmd2,cmd3,cmd4, where each command is separated by a comma. How can I accomplish this? Is there a way where I can the entire line as a string and then parse it?



To explain further, the user executes the program like this after compiling:



./a.out cmd1,cmd2,cmd3,…,cmdN


The number of commands not limited.
If there is a way to take the argument as a single string that would be best, as I can just parse the commands in the program.



I don't need help parsing the text; just some direction on how to get the command line argument.










share|improve this question















closed as too broad by Jonathan Leffler, chux, Billal Begueradj, qrdl, Rob Nov 11 at 14:45


Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.











  • 3




    I don't need help parsing the text, just some direction on how to get the cmd line argument. Its in argv, usually.
    – tkausl
    Nov 11 at 1:29






  • 1




    int main(int argc, char **argv) { if (argc != 2) err_usage("%s cmd1,cmd2,…,cmd3", argv[0]); …parse argv[1]… }.
    – Jonathan Leffler
    Nov 11 at 2:18










  • @wes sheck Just out of curiorsity: Why don't you use ``` (space) to seperate the commands? In that way you can use argc``` to get the number of commands and use argv to access them.
    – JiaHao Xu
    Nov 11 at 2:23










  • @JiaHaoXu: I think the reason is "an assignment … must take … format cmd1,cmd2,cmd3,cmd4" — in other words, the teacher is trying to teach how to do this unorthodox usage for whatever reason, rather than because wes sheck thinks it's a good idea.
    – Jonathan Leffler
    Nov 11 at 2:53


















-3














(C Program) I need help on an assignment where I must take an input from the command line in the format cmd1,cmd2,cmd3,cmd4, where each command is separated by a comma. How can I accomplish this? Is there a way where I can the entire line as a string and then parse it?



To explain further, the user executes the program like this after compiling:



./a.out cmd1,cmd2,cmd3,…,cmdN


The number of commands not limited.
If there is a way to take the argument as a single string that would be best, as I can just parse the commands in the program.



I don't need help parsing the text; just some direction on how to get the command line argument.










share|improve this question















closed as too broad by Jonathan Leffler, chux, Billal Begueradj, qrdl, Rob Nov 11 at 14:45


Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.











  • 3




    I don't need help parsing the text, just some direction on how to get the cmd line argument. Its in argv, usually.
    – tkausl
    Nov 11 at 1:29






  • 1




    int main(int argc, char **argv) { if (argc != 2) err_usage("%s cmd1,cmd2,…,cmd3", argv[0]); …parse argv[1]… }.
    – Jonathan Leffler
    Nov 11 at 2:18










  • @wes sheck Just out of curiorsity: Why don't you use ``` (space) to seperate the commands? In that way you can use argc``` to get the number of commands and use argv to access them.
    – JiaHao Xu
    Nov 11 at 2:23










  • @JiaHaoXu: I think the reason is "an assignment … must take … format cmd1,cmd2,cmd3,cmd4" — in other words, the teacher is trying to teach how to do this unorthodox usage for whatever reason, rather than because wes sheck thinks it's a good idea.
    – Jonathan Leffler
    Nov 11 at 2:53
















-3












-3








-3







(C Program) I need help on an assignment where I must take an input from the command line in the format cmd1,cmd2,cmd3,cmd4, where each command is separated by a comma. How can I accomplish this? Is there a way where I can the entire line as a string and then parse it?



To explain further, the user executes the program like this after compiling:



./a.out cmd1,cmd2,cmd3,…,cmdN


The number of commands not limited.
If there is a way to take the argument as a single string that would be best, as I can just parse the commands in the program.



I don't need help parsing the text; just some direction on how to get the command line argument.










share|improve this question















(C Program) I need help on an assignment where I must take an input from the command line in the format cmd1,cmd2,cmd3,cmd4, where each command is separated by a comma. How can I accomplish this? Is there a way where I can the entire line as a string and then parse it?



To explain further, the user executes the program like this after compiling:



./a.out cmd1,cmd2,cmd3,…,cmdN


The number of commands not limited.
If there is a way to take the argument as a single string that would be best, as I can just parse the commands in the program.



I don't need help parsing the text; just some direction on how to get the command line argument.







c command-line






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 11 at 2:16









Jonathan Leffler

559k896651016




559k896651016










asked Nov 11 at 1:28









wes sheck

1




1




closed as too broad by Jonathan Leffler, chux, Billal Begueradj, qrdl, Rob Nov 11 at 14:45


Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.






closed as too broad by Jonathan Leffler, chux, Billal Begueradj, qrdl, Rob Nov 11 at 14:45


Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.










  • 3




    I don't need help parsing the text, just some direction on how to get the cmd line argument. Its in argv, usually.
    – tkausl
    Nov 11 at 1:29






  • 1




    int main(int argc, char **argv) { if (argc != 2) err_usage("%s cmd1,cmd2,…,cmd3", argv[0]); …parse argv[1]… }.
    – Jonathan Leffler
    Nov 11 at 2:18










  • @wes sheck Just out of curiorsity: Why don't you use ``` (space) to seperate the commands? In that way you can use argc``` to get the number of commands and use argv to access them.
    – JiaHao Xu
    Nov 11 at 2:23










  • @JiaHaoXu: I think the reason is "an assignment … must take … format cmd1,cmd2,cmd3,cmd4" — in other words, the teacher is trying to teach how to do this unorthodox usage for whatever reason, rather than because wes sheck thinks it's a good idea.
    – Jonathan Leffler
    Nov 11 at 2:53
















  • 3




    I don't need help parsing the text, just some direction on how to get the cmd line argument. Its in argv, usually.
    – tkausl
    Nov 11 at 1:29






  • 1




    int main(int argc, char **argv) { if (argc != 2) err_usage("%s cmd1,cmd2,…,cmd3", argv[0]); …parse argv[1]… }.
    – Jonathan Leffler
    Nov 11 at 2:18










  • @wes sheck Just out of curiorsity: Why don't you use ``` (space) to seperate the commands? In that way you can use argc``` to get the number of commands and use argv to access them.
    – JiaHao Xu
    Nov 11 at 2:23










  • @JiaHaoXu: I think the reason is "an assignment … must take … format cmd1,cmd2,cmd3,cmd4" — in other words, the teacher is trying to teach how to do this unorthodox usage for whatever reason, rather than because wes sheck thinks it's a good idea.
    – Jonathan Leffler
    Nov 11 at 2:53










3




3




I don't need help parsing the text, just some direction on how to get the cmd line argument. Its in argv, usually.
– tkausl
Nov 11 at 1:29




I don't need help parsing the text, just some direction on how to get the cmd line argument. Its in argv, usually.
– tkausl
Nov 11 at 1:29




1




1




int main(int argc, char **argv) { if (argc != 2) err_usage("%s cmd1,cmd2,…,cmd3", argv[0]); …parse argv[1]… }.
– Jonathan Leffler
Nov 11 at 2:18




int main(int argc, char **argv) { if (argc != 2) err_usage("%s cmd1,cmd2,…,cmd3", argv[0]); …parse argv[1]… }.
– Jonathan Leffler
Nov 11 at 2:18












@wes sheck Just out of curiorsity: Why don't you use ``` (space) to seperate the commands? In that way you can use argc``` to get the number of commands and use argv to access them.
– JiaHao Xu
Nov 11 at 2:23




@wes sheck Just out of curiorsity: Why don't you use ``` (space) to seperate the commands? In that way you can use argc``` to get the number of commands and use argv to access them.
– JiaHao Xu
Nov 11 at 2:23












@JiaHaoXu: I think the reason is "an assignment … must take … format cmd1,cmd2,cmd3,cmd4" — in other words, the teacher is trying to teach how to do this unorthodox usage for whatever reason, rather than because wes sheck thinks it's a good idea.
– Jonathan Leffler
Nov 11 at 2:53






@JiaHaoXu: I think the reason is "an assignment … must take … format cmd1,cmd2,cmd3,cmd4" — in other words, the teacher is trying to teach how to do this unorthodox usage for whatever reason, rather than because wes sheck thinks it's a good idea.
– Jonathan Leffler
Nov 11 at 2:53














1 Answer
1






active

oldest

votes


















1














When you run a c program, the main function gets 2 parameters:



 main(int argc, char *argv)


where the first one is the number of the command line arguments, the second is the array which contains the arguments.



command line arguments are split by spaces and parts of the string constitute the argv array.



In your case 'cmd1,cmd2,cmd3' does not seem to contain any space, so these will be a single element in the argv array. As soon as you add spaces, you will get more args. i.e. cmd1 , cmd2 will end up in 3 args: cmd1, , and cmd2.



I guess your task would be to merge all args into a single string and then parse this string, tokenizing it by the , delimiter.



Note that argv[0] will contain the path of the program you run.






share|improve this answer




























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    When you run a c program, the main function gets 2 parameters:



     main(int argc, char *argv)


    where the first one is the number of the command line arguments, the second is the array which contains the arguments.



    command line arguments are split by spaces and parts of the string constitute the argv array.



    In your case 'cmd1,cmd2,cmd3' does not seem to contain any space, so these will be a single element in the argv array. As soon as you add spaces, you will get more args. i.e. cmd1 , cmd2 will end up in 3 args: cmd1, , and cmd2.



    I guess your task would be to merge all args into a single string and then parse this string, tokenizing it by the , delimiter.



    Note that argv[0] will contain the path of the program you run.






    share|improve this answer


























      1














      When you run a c program, the main function gets 2 parameters:



       main(int argc, char *argv)


      where the first one is the number of the command line arguments, the second is the array which contains the arguments.



      command line arguments are split by spaces and parts of the string constitute the argv array.



      In your case 'cmd1,cmd2,cmd3' does not seem to contain any space, so these will be a single element in the argv array. As soon as you add spaces, you will get more args. i.e. cmd1 , cmd2 will end up in 3 args: cmd1, , and cmd2.



      I guess your task would be to merge all args into a single string and then parse this string, tokenizing it by the , delimiter.



      Note that argv[0] will contain the path of the program you run.






      share|improve this answer
























        1












        1








        1






        When you run a c program, the main function gets 2 parameters:



         main(int argc, char *argv)


        where the first one is the number of the command line arguments, the second is the array which contains the arguments.



        command line arguments are split by spaces and parts of the string constitute the argv array.



        In your case 'cmd1,cmd2,cmd3' does not seem to contain any space, so these will be a single element in the argv array. As soon as you add spaces, you will get more args. i.e. cmd1 , cmd2 will end up in 3 args: cmd1, , and cmd2.



        I guess your task would be to merge all args into a single string and then parse this string, tokenizing it by the , delimiter.



        Note that argv[0] will contain the path of the program you run.






        share|improve this answer












        When you run a c program, the main function gets 2 parameters:



         main(int argc, char *argv)


        where the first one is the number of the command line arguments, the second is the array which contains the arguments.



        command line arguments are split by spaces and parts of the string constitute the argv array.



        In your case 'cmd1,cmd2,cmd3' does not seem to contain any space, so these will be a single element in the argv array. As soon as you add spaces, you will get more args. i.e. cmd1 , cmd2 will end up in 3 args: cmd1, , and cmd2.



        I guess your task would be to merge all args into a single string and then parse this string, tokenizing it by the , delimiter.



        Note that argv[0] will contain the path of the program you run.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 11 at 3:23









        Serge

        3,4402914




        3,4402914















            這個網誌中的熱門文章

            Academy of Television Arts & Sciences

            L'Équipe

            1995 France bombings