title: Using getopt in C with non-option arguments
body: <p>I'm making a small program in C that deals with a lot of command line arguments, so I decided to use getopt to sort them for me.</p>
  
  <p>However, I want two non-option arguments (source and destination files) to be mandatory, so you have to have them as arguments while calling the program, even if there's no flags or other arguments.</p>
  
  <p>Here's a simplified version of what I have to handle the arguments with flags:</p>
  
  <pre><code>while ((c = getopt(argc, argv, "i:d:btw:h:s:")) != -1) {
      switch (c) {
          case 'i': {
              i = (int)atol(optarg);
          }
          case 'd': {
              d = (int)atol(optarg);
          }
          case 'b':
              buf = 1;
              break;
          case 't':
              time = 1;
              break;
          case 'w':
              w = (int)atol(optarg);
              break;
          case 'h':
              h = (int)atol(optarg);
              break;
          case 's':
              s = (int)atol(optarg);
              break;
          default:
              break;
      }
  }
  </code></pre>
  
  <p>How do I edit this so that non-option arguments are also handled?</p>
  
  <p>I also want to be able to have the non-options either before <em>or</em> after the options, so how would that be handled?</p>