[c] CGI Library to C^^
C언어의 CGI 라이브러리 함수
C언어의 구체적인 설명은 약하고 함수의 기능만 설명한다. 예제는 처음에 나오는 getword()함수만 우선 살펴보겠다.
#include <stdio.h>
#include "cgiutil.h"
void main()
{
char *qs;
qs = getenv("QUERY_STRING");
printf("Content-type: text/html\n\n");
printf("CGI 프로그램 : %s", qs);
}
#include <stdlib.h>
#include "cgiutil.h"
void main(int argc, char *argv[]) {
char buf[200];
char exeFile[BUFSIZE];
strcpy(exeFile, argv[1]);
while(1) {
getword(buf, exeFile, '/');
if(!strchr(exeFile, '/'))
break;
}
printf(exeFile);
}
void getword(char *word, char *line, char stop) : 라인으로 전달되어온 문자열을 지정된 stop지시문자까지 읽어서 *word에 리턴하고, 그 다음부터 나오는 문자열을 line에 전달한다. 즉, line으로 온 문자열을 stop에서 지시한 구분자로 분리하여 앞의 것은 word에 뒤의 것은 line에 전달한다.
char *makeword(char *line, char stop) : getword()와 같은 기능을 하되 getword()가 인자에 의해 값을 전달함에 비해 이 함수는 리턴값에 의해 결과를 전달한다.
char *fmakeword(FILE *f, char stop, int *cl) : 파일 스트림에서 stop문자 전까지 읽어서 리턴값으로 돌려주고, 그 문자수만큼 cl값을 차감한다. 이것은 문자열의 크기만큼 매번 메모리 할당을 해야하는 번거로움을 줄이기 위해 사용한다.
char *smakeword(char *str, char stop, int *cl) : fmakeword()함수와 같은 기능을 하되, 파일 포인터를 인자로 받지 않고 문자열 포인터를 인자로 받는다.
void plustospace(char *str) : 웹브라우저에서 인코딩된 '+'를 다시 원래 값인 스페이스로 치환한다.
int ind(char *s, char c) : 문자열 s에서 지정 문자 c가 나타나는 인덱스를 리턴한다. 인덱스는 0부터 시작하고, 없으면 -1을 리턴한다.
int rind(char *s, char c) : int()함수와 같은 기능을 하되 문자열을 뒤에서 부터 찾는다.
int getline(char *s, int n, FILE *f) : 파일스트림 f에서 n바이트를 읽어 문자열 s에 치환한다. 만약에 파일의 끝에 도달하면 1을, 그렇지 않으면 0을 리턴값으로 한다.
void send_fd(FILE *f, FILE *fd) : 파일스트림 f를 fd로 복사한다.
void escape_shell_cmd(char *cmd) : 특수문자 앞에 를 붙여서 제어문자로 작동하지 않도록 한다.
char *rmCtrlChar(char *str) : &, ", <, > 등과 같이 프로그램 처리나 보안상 문제가 될만한 문자를 제거한다.
char rmCrLf(char *str) : Carriage Return이나 Line Feed문자를 제거한다.
void prtErrMsg(char *str) : 모든 에러 메시지를 정형화된 형태로 출력한다.
void back(void) : 직전 메뉴로 이동하는 앵커를 준비한다.
No. | Category | Subject | Author | Date | Views |
---|---|---|---|---|---|
21 | System/OS |
[펌] 마이크로서비스, 모노리포, SRE, ... 덮어놓고 구글 따라하면 안 되는 기술들
![]() |
hooni | 2020.10.15 | 1120 |
20 | Develop | [ubuntu] 우분투 18.04에 PHP5 설치하기 | hooni | 2020.11.14 | 1243 |
19 | Develop | [kotlin] 코틀린 안드로이드 앱 버전/빌드 정보 | hooni | 2020.12.15 | 997 |
18 | Develop |
[swift] NotificationCenter 간단 예제
![]() |
hooni | 2021.01.27 | 8353 |
17 | Develop |
[swift] popToRoot 모달뷰, 네비게이션컨트롤러 한꺼번에 닫기
![]() |
hooni | 2021.01.29 | 1608 |
16 | Develop | [js] show/hide 이벤트 감시 (Observing show/hide event) | hooni | 2021.02.03 | 2825 |
15 | Develop | [vim] vim 명령으로  문자 제거하기 (remove 65279 bomb) | hooni | 2021.02.03 | 1440 |
14 | Develop | [swift] 실행시간 측정하기 | hooni | 2021.09.14 | 862 |
13 | Develop | [iOS] Xcode 불필요한 캐시 삭제하기 | hooni | 2021.10.12 | 2005 |
12 | Develop |
[iOS] 시뮬레이터에 푸시 알림을 보내는 방법
![]() |
hooni | 2021.10.13 | 2038 |
11 | Develop |
macOS에 node, npm 설치하기 (homebrew)
![]() |
hooni | 2021.11.06 | 1481 |
10 | System/OS |
[apache2] Redirect HTTP to HTTPS
![]() |
hooni | 2022.02.03 | 869 |