user-0 提问: C语言命令行参数问题

回复:
user: user-0
content: 引用 6 楼 cfjtaishan 的回复:[quote=引用 5 楼 bcai_yuan 的回复:] [quote=引用 3 楼 cfjtaishan 的回复:] [quote=引用 2 楼 bcai_yuan 的回复:] [quote=引用 1 楼 cfjtaishan 的回复:] #include<stdio.h> #include<string.h>  #define MAXLINE 1000  //int getline(char *s,int lim);  char pattern[] = "ould";  int main(int argc,char *argv[]) {     int found = 0, i;      if (argc < 2) {         printf("Usage: find pattern\n");     } else {         for (i = 1; i < argc; i++) {             puts(argv[i]);             if(strstr(argv[i], pattern)) {                 printf("%s\n", argv[i]);                 found++;             }         }     }     printf("found = %d\n", found);     return found; } 需要分清终端输入和程序里getline输入的区别；终端输入的数据会保存在argv字符指针数组里，这些字符串是以空格为分割的。 getline是程序里要输入的。 之所以你输入command could you help me不能运行while里的getline，因为argc的值此时为5 != 2  这样的话我不就是检测我在终端输入的字符串里面是否含有pattern了吗？但是我运行的时候无论终端输入是否含有“ould”，都能运行出来，而且也不打印found的值，这是为什么？  如果我想引用getline函数又怎么引用呢？这样可以让程序更加灵活一点。[/quote] 你是用我的demo测试的吗？[/quote] 不是，我就直接在cmd里测试的。我不懂什么是demo测试[/quote] 就是用我的代码测试，先编译我的代码，然后用我的代码测试[/quote] 直接编译测试就是这样啊

user: user-1
content: 引用 5 楼 bcai_yuan 的回复:[quote=引用 3 楼 cfjtaishan 的回复:] [quote=引用 2 楼 bcai_yuan 的回复:] [quote=引用 1 楼 cfjtaishan 的回复:] #include<stdio.h> #include<string.h>  #define MAXLINE 1000  //int getline(char *s,int lim);  char pattern[] = "ould";  int main(int argc,char *argv[]) {     int found = 0, i;      if (argc < 2) {         printf("Usage: find pattern\n");     } else {         for (i = 1; i < argc; i++) {             puts(argv[i]);             if(strstr(argv[i], pattern)) {                 printf("%s\n", argv[i]);                 found++;             }         }     }     printf("found = %d\n", found);     return found; } 需要分清终端输入和程序里getline输入的区别；终端输入的数据会保存在argv字符指针数组里，这些字符串是以空格为分割的。 getline是程序里要输入的。 之所以你输入command could you help me不能运行while里的getline，因为argc的值此时为5 != 2  这样的话我不就是检测我在终端输入的字符串里面是否含有pattern了吗？但是我运行的时候无论终端输入是否含有“ould”，都能运行出来，而且也不打印found的值，这是为什么？  如果我想引用getline函数又怎么引用呢？这样可以让程序更加灵活一点。[/quote] 你是用我的demo测试的吗？[/quote] 不是，我就直接在cmd里测试的。我不懂什么是demo测试[/quote] 就是用我的代码测试，先编译我的代码，然后用我的代码测试

user: user-0
content: 引用 3 楼 cfjtaishan 的回复:[quote=引用 2 楼 bcai_yuan 的回复:] [quote=引用 1 楼 cfjtaishan 的回复:] #include<stdio.h> #include<string.h>  #define MAXLINE 1000  //int getline(char *s,int lim);  char pattern[] = "ould";  int main(int argc,char *argv[]) {     int found = 0, i;      if (argc < 2) {         printf("Usage: find pattern\n");     } else {         for (i = 1; i < argc; i++) {             puts(argv[i]);             if(strstr(argv[i], pattern)) {                 printf("%s\n", argv[i]);                 found++;             }         }     }     printf("found = %d\n", found);     return found; } 需要分清终端输入和程序里getline输入的区别；终端输入的数据会保存在argv字符指针数组里，这些字符串是以空格为分割的。 getline是程序里要输入的。 之所以你输入command could you help me不能运行while里的getline，因为argc的值此时为5 != 2  这样的话我不就是检测我在终端输入的字符串里面是否含有pattern了吗？但是我运行的时候无论终端输入是否含有“ould”，都能运行出来，而且也不打印found的值，这是为什么？  如果我想引用getline函数又怎么引用呢？这样可以让程序更加灵活一点。[/quote] 你是用我的demo测试的吗？[/quote] 不是，我就直接在cmd里测试的。我不懂什么是demo测试

user: user-2
content: http://bbs.csdn.net/topics/390469280

user: user-1
content: 引用 2 楼 bcai_yuan 的回复:[quote=引用 1 楼 cfjtaishan 的回复:] #include<stdio.h> #include<string.h>  #define MAXLINE 1000  //int getline(char *s,int lim);  char pattern[] = "ould";  int main(int argc,char *argv[]) {     int found = 0, i;      if (argc < 2) {         printf("Usage: find pattern\n");     } else {         for (i = 1; i < argc; i++) {             puts(argv[i]);             if(strstr(argv[i], pattern)) {                 printf("%s\n", argv[i]);                 found++;             }         }     }     printf("found = %d\n", found);     return found; } 需要分清终端输入和程序里getline输入的区别；终端输入的数据会保存在argv字符指针数组里，这些字符串是以空格为分割的。 getline是程序里要输入的。 之所以你输入command could you help me不能运行while里的getline，因为argc的值此时为5 != 2  这样的话我不就是检测我在终端输入的字符串里面是否含有pattern了吗？但是我运行的时候无论终端输入是否含有“ould”，都能运行出来，而且也不打印found的值，这是为什么？  如果我想引用getline函数又怎么引用呢？这样可以让程序更加灵活一点。[/quote] 你是用我的demo测试的吗？

user: user-0
content: 引用 1 楼 cfjtaishan 的回复:#include<stdio.h> #include<string.h>  #define MAXLINE 1000  //int getline(char *s,int lim);  char pattern[] = "ould";  int main(int argc,char *argv[]) {     int found = 0, i;      if (argc < 2) {         printf("Usage: find pattern\n");     } else {         for (i = 1; i < argc; i++) {             puts(argv[i]);             if(strstr(argv[i], pattern)) {                 printf("%s\n", argv[i]);                 found++;             }         }     }     printf("found = %d\n", found);     return found; } 需要分清终端输入和程序里getline输入的区别；终端输入的数据会保存在argv字符指针数组里，这些字符串是以空格为分割的。 getline是程序里要输入的。 之所以你输入command could you help me不能运行while里的getline，因为argc的值此时为5 != 2  这样的话我不就是检测我在终端输入的字符串里面是否含有pattern了吗？但是我运行的时候无论终端输入是否含有“ould”，都能运行出来，而且也不打印found的值，这是为什么？  如果我想引用getline函数又怎么引用呢？这样可以让程序更加灵活一点。

user: user-1
content: #include<stdio.h> #include<string.h>  #define MAXLINE 1000  //int getline(char *s,int lim);  char pattern[] = "ould";  int main(int argc,char *argv[]) {     int found = 0, i;      if (argc < 2) {         printf("Usage: find pattern\n");     } else {         for (i = 1; i < argc; i++) {             puts(argv[i]);             if(strstr(argv[i], pattern)) {                 printf("%s\n", argv[i]);                 found++;             }         }     }     printf("found = %d\n", found);     return found; } 需要分清终端输入和程序里getline输入的区别；终端输入的数据会保存在argv字符指针数组里，这些字符串是以空格为分割的。 getline是程序里要输入的。 之所以你输入command could you help me不能运行while里的getline，因为argc的值此时为5 != 2