【发布时间】:2017-03-18 08:54:22
【问题描述】:
我正在尝试制作一个从 ubuntu 终端获取命令并同时读取文件的程序。命令将是,如果用户键入“-c”,它将读取文件并打印字符数,如果用户键入“-w”,它将打印读取文件中的字数,“-l”打印换行符的数量人物。无论如何,我尝试使用 fscanf 来计算字符数,但由于某种原因它似乎不起作用。谁能解释我做错了什么或者是否有更好的方法来做到这一点?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]){
int i;
char words[1000];
int counter = 0;
for(i = 0; i < argc; i++){
if(strncmp(argv[i], "-c", 2) == 0){
if(argv[i + 1] != NULL){
while((fscanf(argv[i + 1], "[^\n]%s", words[i])) != EOF){
counter++;
}
printf("%d characters\n", counter);
}
printf("print character count\n");
}
else if(strncmp(argv[i], "-w", 2) == 0){
printf("print word counts\n");
}
else if(strncmp(argv[i], "-l", 2) == 0){
printf("print newline counts\n");
}
else if(strncmp(argv[i], "-h", 2) == 0){
printf("prints help\n");
}
}
}
【问题讨论】:
-
从字符串中读取是
sscanf而不是fscanf。 -
你也可以使用getopt库来解析命令行参数。
标签: c linux command-line command-line-arguments