본문 바로가기

전체 글28

[c언어] 파일 입출력 fscanf() 와 fgets() [c언어] 파일 입출력 fscanf() 와 fgets() 파일입출력을 할때 fscanf와() fgets()는 각각 장단점이 있다. fscanf 와 같은 경우는 정수형, 문자형, 문자열형을 형별로 입력이 가능하며, 개발자가 임의로 각각의 값을 구별하기 위해 구분자를 제공할 수 있다. 하지만 단점은 만약에 입력되어 있는 값이 한덩어리의 문자열이지만, 그 문자열이 공백을 포함하고 있는 경우에는 개발자가 임의로 구분자를 제공했더라도 추가적으로 공백도 구분자로 컴파일러가 받아들인다. 그래서 입력되어 있는 값이 예를 들어 "슈퍼맨이 돌아왔다" 인경우 fscanf()는 "슈퍼맨"이 "돌아왔다"를 따로 구분해버린다. 이러한 단점은 fgets()를 통해서 해결할 수 있다. fgets()와 같은 경우는 하나의 문자열은 그.. 2015. 4. 12.
C 프로그래밍 fgets() 함수 라인 끝 개행 제거 C 프로그래밍 fgets() 함수 라인 끝 개행 제거 fgets() 함수를 사용해서 어떤 텍스트 문서를 읽으면, 문서 내용을 전체를 가감없이 가져오기때문에 개행 문자도 읽어들인다. 이런 라인끝 개행 문자를 제거하기 위해서는 다음과 같은 코드를 박아준다. ... char* input; char* line_p; fgets(input, 100, fp); if((line_p = strchr(input, '\n')) != NULL)*line_p ='\0'; 출처:http://ra2kstar.tistory.com/173 2015. 4. 12.
fgets()함수에서 개행문자 제거 (c언어) [c언어]fgets()를 통해서 파일로부터 데이터 입력을 받는 경우 뒤에 개행문자 제거하는 방법 c에서 파일로부터 입력을 fgets()함수로 받는 경우에는 파일에 데이터 구별을 위해 입력해놓은 개행문자도 입력받게 된다. 그러므로 이러한 경우에는 문자열로 입력받은 경우 배열로 입력을 받게 되므로, 마지막에 입력되어 있는 개행문자를 제거해줘야 한다. fgets(str, strlen(str), stdin); str[strlen(str) - 1] = '\0'; 정말 간단하다. 언어로 프로그래밍할때마다 느끼는 거지만 항상 공식이 있는 것은 아니고, c언어에서 제공하는 라이브러리 함수를 잘 익힌다음, 응용해서 사용해야 되야 된다고 생각한다. 다시 처음부터 차근차근 숙지하지 않은 부분이 없는지 확인해봐야겠다. 2015. 4. 12.
내가 만든 도서관리 프로그램 #include #include #include #include #include //기본적으로 책식별자, 책이름, 저자, 가격) typedef struct node_data{ int iden; char bookname[50]; char writer[20]; int price; }N_data; typedef struct node{ struct node_data nd; struct node *next; }Node; typedef struct linkedlist{ Node *head; Node *cur; Node *before; int numofdata; int (*comp)(int iden1, int iden2); }List; void ListInit(List *list); void SearchBook(Li.. 2015. 4. 12.