我撰寫了一個程式,它接收一個 txt 檔案并回傳一個包含字符數、單詞數和行數的陣列。這基本上是wc命令。
我正在嘗試實作-l, -c,-w讓用戶進入命令列以指定用戶想要查看的內容。如果沒有給出-l, , -c,-w則列印所有這些。如果用戶鍵入./wc -l -c -w -l -c -w,那么它仍然只列印一次。在-l,之后-c,-w用戶輸入檔案名。
一個例子是./wc -l -c -w alice.txt anh.txt。這將列印兩個文本檔案的行、字符和單詞。
我正在努力想辦法做到這一點。這是我回傳陣列的代碼。
我有一個想法,比如我們回圈遍歷所有引數,如果它找到一個-l或-c或-w它會回傳 1 為真,將它添加到一個單獨的陣列中,并使用該陣列列印出需要的內容。
int *get_counts(char *filename)
{
FILE *file = fopen(filename, "r");
if (file == NULL)
{
printf("NULL FILE");
exit(1);
}
int c;
bool whitespace = true;
static int arr[3] = {0,0,0};
for(;;)
{
c = fgetc(file);
if (c == EOF)
{
break;
}
else if (c == '\n')
{
arr[0] ;
}
else if (whitespace && !isspace(c))
{
arr[1] ;
whitespace = false;
}
else if (!whitespace && isspace(c))
{
whitespace = true;
}
arr[2] ;
}
fclose(file);
return arr;
}
uj5u.com熱心網友回復:
這是決議引數的偽代碼:
Initialize flag variables: l, c, w = 0
Loop from i = 1 to argc - 1:
Check value of argv[i]:
When "-l", set l flag to 1
When "-c", set c flag to 1
When "-w", set w flag to 1
Otherwise, break loop
Interpret remaining values from argv as filenames
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/518348.html
標籤:C
上一篇:在c中展平一個鏈表
下一篇:跨翻譯單元共享靜態鏈接
