0
試圖使下面的c代碼工作,但每次我給它一個文件來返回它的大小說文件名是空的。我已經試過optarg總是返回空
例如命令行:
Question7 -h -t -f question8.c
不管,它返回OPTARG爲空。我不確定爲什麼會發生這種情況。
#include <stdio.h>
#include <getopt.h>
#include <sys/utsname.h>
#include <time.h>
#include <sys/stat.h>
int main(int argc, char **argv){
char c;
struct utsname uname_pointer;
time_t time_raw_format;
struct stat s;
int hflag = 0;
int tflag = 0;
int fflag = 0;
char *fvalue = NULL;
int index;
int check;
opterr = 0;
while ((check = getopt (argc, argv, "htf:")) != -1){
switch (check) {
case 'h':
hflag = 1;
break;
case 't':
tflag = 1;
break;
case 'f':
fflag = 1;
break;
}
}
if (hflag ==1) {
uname (&uname_pointer);
printf("Hostname = %s \n", uname_pointer.nodename);
}
if (tflag ==1){
time (&time_raw_format);
printf("the current local time: %s", ctime(&time_raw_format));
}
if (fflag == 1){
if (stat(optarg, &s) == 0){
printf("size of file '%s' is %d bytes\n", optarg, (int) s.st_size);
}else {
printf("file '%s' not found\n", optarg);
}
}
}
,使一個很大的意義,但現在我得到一個coupel多個錯誤代碼: GCC:無法識別的選項「-h」 CC1:錯誤:無法識別的命令行選項「-f」 CC1:錯誤:無法識別的命令行選項「-f」 –
聽起來好像你試圖用選項'-f'和'-h'運行編譯器,而不是你的程序。 –
就是這樣,謝謝。 –