tags:

views:

79

answers:

2

I am working out a small program... wherein i provide the command line argments `

For e.g. ./a.out 2 3 4 + *

when it comes ' * ', rather than printing the ' * ' itself, it prints the folders inside the directory,,, ' + ' works fine..... Please let me know how to remove this error..... I want to print ' * ' here........

#include <stdio.h>
int main(int argc, char *argv[])
{
   char *c;

   while(--argc > 0)
   {
      c = *++argv;
      if(strcmp(c,"+") == 0 )
      {
          printf("%s",c);
      }
      else if(strcmp(c,"-") == 0)
      {
          printf("%s",c);
      }
      else if(c[0] == '*')
      {
          printf("%s",c);
      }
   }
}
+7  A: 

This has nothing to do with your code, but rather with your shell. If you want the shell to not glob wildcards then you will need to escape them, either with a backslash or with quotes.

./foo \*
./bar '*'
Ignacio Vazquez-Abrams
+3  A: 

Your shell interprets the '*' character as the list of all files in the current directory. The problem is not in your program but in the way you run it.

try:

./a.out 2 3 4 + \*

Silvio Donnini