Section 5.10 from Kernighan/Ritchie Command line arguments/optional parameters
-
13-11-2019 - |
Question
first time poster. Was hoping someone could help me with this. In section 5.10, Kernighan gives this example of a program that reprints lines of text with the string in them. So I saved this as "find" in my folder, and then went into cmd, then the folder, then typed find "-x whatever". Yet for some reason the '-' is not registering, and it just treats "-x whatever" as one long string. Anyone got any clues why this is happening? Thanks.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXLINE 1000
int getline(char *s, int lim)
{
int i = 0;
while(i < lim - 1 && (*s = getchar()) != EOF && *s++ != '\n')
i++;
if(*s == '\n')
*s++ = '\n', i++;
*s = '\0';
return i;
}
int main(int argc, char *argv[])
{
char line[MAXLINE];
long lineno = 0;
int c, except = 0, number = 0, found = 0;
while(--argc > 0 && (*++argv)[0] == '-')
while(c = *++argv[0])
switch(c) {
case 'x':
except = 1;
break;
case 'n':
number = 1;
break;
default:
printf("find: illegal option %c\n", c);
argc = 0;
found = -1;
break;
}
if(argc != 1)
printf("Usage: find -x -n pattern\n");
else
while(getline(line, MAXLINE) > 0) {
lineno++;
if((strstr(line, *argv) != NULL) != except) {
if(number)
printf("%ld:", lineno);
printf("%s", line);
found++;
}
}
printf("Found: %d", found);
return found;
}
Solution
You have to type
find -x whatever
instead of
find "-x whatever"
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow