Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5.  
  6. void help (char * name)
  7. {
  8. fprintf (stderr, "Usage:\n");
  9. fprintf (stderr, " %s help\n", name);
  10. fprintf (stderr, " %s <id>\n", name);
  11. }
  12.  
  13.  
  14. void die (void)
  15. {
  16. fprintf (stderr, "Aborting\n");
  17. exit (1);
  18. }
  19.  
  20.  
  21. void usage (char * name)
  22. {
  23. fprintf (stderr, "!!ERROR!! Wrong invocation\n");
  24. help (name);
  25. die ();
  26. }
  27.  
  28.  
  29. double parse_value (char * string)
  30. {
  31. char * last;
  32. double value;
  33.  
  34. value = strtod (string, &last);
  35.  
  36. if (last == string) {
  37. fprintf (stderr, "Cannot parse value: `%s`\n", string);
  38. die ();
  39. } else if (last[0] != 0) {
  40. fprintf (stderr, "Partialy parsed value: `%s`\n", string);
  41. die ();
  42. }
  43.  
  44. return (value);
  45. }
  46.  
  47.  
  48. void f1 (int argument_count, char * arguments[])
  49. {
  50. char buff[10];
  51. memset(buff,0,sizeof(buff));
  52. strcpy(buff,"abcd");
  53. printf("buff = %s",&(*buff));
  54. exit (0);
  55. }
  56.  
  57. void f2 (int argument_count, char * arguments[])
  58. {
  59. int x = parse_value (arguments[1]);
  60. printf("Value = %d",x);
  61. exit (0);
  62. }
  63.  
  64. void f3 (int argument_count, char * arguments[])
  65. {
  66. unsigned sz = (unsigned)parse_value(arguments[1]);
  67. while (--sz >=0)
  68. printf("Value sz = %d",sz);
  69. exit (0);
  70. }
  71.  
  72.  
  73. void f4 (int argument_count, char * arguments[])
  74. {
  75. int f;
  76. if (f == parse_value(arguments[1]))
  77. {
  78. f = parse_value(arguments[0]);
  79. printf("Value f = %d",f);
  80. }
  81. exit (0);
  82.  
  83. }
  84.  
  85.  
  86. int main (int argc, char *argv[])
  87. {
  88. if (argc < 2)
  89. usage (argv[0]);
  90.  
  91. if (strcmp (argv[1], "help") == 0) {
  92. help (argv[0]);
  93. exit (0);
  94. } if (strcmp (argv[1], "1") == 0)
  95. f1 (argc, argv);
  96. else if (strcmp (argv[1], "2") == 0)
  97. f2 (argc, argv);
  98. else
  99. if (strcmp (argv[1], "3") == 0)
  100. f3 (argc, argv);
  101. else
  102. if (strcmp (argv[1], "3") == 0)
  103. f4 (argc, argv);
  104. usage (argv[0]);
  105.  
  106. printf ("command not executed\n");
  107. die ();
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement