argv에 관한 질문
조회수 576회
프로그램이 linked list를 이용해서 메모리상에 저장한 후 프로그램 종료시 그 정보를 data.dat로 저장하는 것인데 argv[0]에는 경로가 저장되고 argv[1]에 시작하면서 적은 옵션이 저장되는 것으로 알고있습니다. 그런데 실제로 실행시에 argc = 3으로 부여된 것을 확인할 수 있고 코드 내에서 argv[2]를 사용해야 합니다. 그래서 이 코드에서 argc = 3 어떻게 결정되었는지 궁금합니다. 그리고 argv[1]은 무엇을 저장하는지 궁금합니다.
//linked_list.h
#ifndef LINKED_LIST_H
#define LINKED_LIST_H
struct Linked_list
{
char Name[10];
struct Linked_list *next;
};
typedef struct Linked_list Node;
int size;
#endif
//main.c
#include <stdio.h>
#include <stdlib.h>
#include "linked_list.h"
#define FNUM 2
void registerNode();
void print();
void (*pFuncs[FNUM])()={registerNode, print};
Node* head;
int main(int argc, int** argv)
{
int size = 0;
int select = 0;
Node* target = malloc(sizeof(Node));
FILE *fp = fopen(argv[2],"wb");
head = malloc(sizeof(Node));
head->next = NULL;
while(select != 3)
{
printf("1.Register\t 2.Print\t 3.Exit\nSelect number : ");
scanf("%d", &select);
if(select>0 && select<=FNUM)
pFuncs[select-1]();
else if(select != 3)
printf("You choose wrong number\n");
}
while(target != NULL)
{
fwrite(target,sizeof(Node),1,fp);
target = target->next;
}
fclose(fp);
return 0;
}
void registerNode()
{
Node* current = head;
Node* tmp = malloc(sizeof(Node));
for(int i = 0; i < size; i++)
{
current = current->next;
}
while(getchar() != '\n');//버퍼비우기
printf("Name : ");
gets(tmp->Name);
printf("\n");
current->next = tmp;
tmp->next = NULL;
size++;
return;
}
void print()
{
Node *target_Node = head->next;
while(target_Node != NULL)
{
printf("Name : %s\n", target_Node->Name);
target_Node = target_Node->next;
}
printf("\n");
return;
}
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력