cJSON 기본 개념
·
C언어
JSON(JavaScript Object Notation)은 데이터를 저장하고 교환하는 데 사용되는 가벼운 데이터 형식이다.주로 네트워크, 파일입출력, 서버와 클라이언트 간 데이터 전송에 활용되며,데이터를 객체(Object)와 배열(Array)로 저장한다. ( 객체={ } , 배열=[ ] ) C에서는 json을 지원하지 않아 cJSON과 jsmn이라는 라이브러리를 사용 해야한다.typedef struct cJSON{ struct cJSON *next; // 배열이나 객체의 다음 항목을 가리킴 struct cJSON *prev; // 배열이나 객체의 이전 항목을 가리킴 struct cJSON *child; // 객체나 배열의 자식 항목을 가리킴 int type; ..
유저찾기 번호노출 수정
·
C언어
가운데 번호는 별처리 해야하는데 깜빡함 // 번호 if (strlen(myfree[i].phone)==11) { printf("%d의 번호:", i+1); for (int j = 0; j  회원가입 중 전화번호 입력 시 하이픈('-')을 입력받냐 안받냐의 차이도 있기 때문에 번호만 입력하면 01012345678 = 11자하이픈도 입력하면 010-1234-5678 = 13자 니까 조건을 1. 길이 11, 2. 길이 13  c언어에는 슬라이싱 기능이 없어서 strcpy나 함수를 만들어야하는데공부가 좀 필요할거같아서 노가다 했다. 슬라이싱은 종종 쓸 일이 있을거..
유저찾기
·
C언어
어제 작성한 코드는 계속 범위를 제대로 읽어들이지 못하는 오류가 있었고그 오류를 고치려고 애썼지만 결국 원인을 찾아내지 못했다.시간낭비라는 생각이 들어서 갈아엎고 처음부터 다시 시작했다.우리는 회원출력하는 c파일이 따로 있기 때문에 그걸 복사해서 베이스로 삼고 코드를 이어나갔다.범위를 아주 정확히 제대로 읽어들였다. 정말 감격스러웠다.. fp = fopen("all_users.bin","rb"); for (int i = 0; i 파일을 열어준 뒤, for문으로 하나하나 읽어들이는 코드가 있어야만 제대로 범위를 읽어냈다.이전에 만들었던 코드는 메뉴를 선택할때마다 열었는데 포인터 위치가 그때 꼬인거같다.그래서 fseek 함수를 써서 포인트 위치를 처음으로 돌려놨는데도 별 소용이 없었다. 왜 그런지..
반환값으로 문자열을 반환하는 함수 만들기
·
C언어
구조체 안에 있는 배열에 값을 할당할 때 직접대입하면 안되고 strcpy로 넣어주어야 한다   메일 프로그램에서 유저찾기 기능을 구현하던 중user_pick 1과 2가 초반에 유저에게 입력받는 부분이 동일해서 함수로 만들고 싶었다.우선 해당 함수의 반환값이 문자열이고,그 반환값을 메인에 있는 문자열 변수로 받아줘야 한다고 생각했다.  그렇다면 문자열을 반환하는 함수는 어떻게 만들까?구글링 해보니 반환값의 형식은 const char* 이라고 한다.char형 포인터인 이유는 배열의 경우 배열이름 자체가 포인터이기 때문이다!!앞에 상수가 붙는 이유는 해당 함수에서 만들어진 문자열은 길이가 고정되어있기 때문이다. const char* f_user_input(){ char *user_input; pri..
0404 개발일지
·
C언어
#include #include typedef struct fre{ char name[10]; char id [20]; char password[30]; char phone[20]; char age[5];}friend;int main(){ FILE *fp; friend myfree[30]; char user_input_id[20]; char user_input_pw[20]; printf("[로그인 UI] \n"); int switch_1 = 1; while(switch_1==1) { printf("ID: "); scanf("%s", user_input_id); printf("유저가 입력한 아..
파일 입출력
·
C언어
#include int main(){ FILE * fp=fopen("./data2.txt","wt"); //출력스트림 if (fp==NULL) { puts("오픈 실패"); return -1; } fputc('Abc', fp); // putc는 문자열이 아니라 문자를 받는거라서, 여러개를 써도 맨끝에 하나만 저장됨 fclose(fp); // 파일을 닫아주지않으면 전송한 데이터는 출력버퍼에만 남아있어서, 닫아준 다음 반환하지 않으면 전송되지 않는다. return 0;} fopen ( 파일이름, 스트림종류 )스트림종류 1.입력 rt / 2.출력 wt (t는 텍스트모드 라는 뜻) #include int main(){ // 파일출력 cha..
포인터 공부
·
C/연습장
int main(){int num1=100, num2=100;int *pnum; // int형 포인터 변수 pnum 선언pnum = &num1; // 포인터 pnum에 num1값 초기화(*pnum)+=30;pnum = &num2;(*pnum)-=30;printf("num1:%d, num2:%d\n", num1, num2);// p.284 문제1int num=10;int *ptr1=#int *ptr2=ptr1; // 포인터 ptr2에 ptr1 값 저장(*ptr1)++;(*ptr2)++;printf("num:%d\n", num); // 12// 문제2int num3=10, num4=20;int *ptr3=&num3, *ptr4=&num4;(*ptr3)+=10; // 20(*ptr4)-=10; // 1..
TCP/IP
·
C언어
TCP/IP는 인터넷에서 사용하는 프로토콜의 집합이다. 그렇다면 인터넷은 무엇이고, 프로토콜은 무엇인가? 인터넷은 컴퓨터끼리 서로 데이터를 주고 받는 연결망 중에서 가장 규모가 큰 네트워크이다.인터넷에서 통신 할 때 과정의 절차나 규칙을 정해놓은 것을 프로토콜이라고 한다.
파일 입출력
·
C언어
포인터 연습
·
C/연습장
#include #define MONTHS 12 int main(){ int days[MONTHS] = {31,28,31,30,31,30,31,31,30,31,30,31}; int index; for (index = 0; index *(days+index) 의 뜻은index의 범위는 0~11 이고, days 배열의 [index] 를 뜻한다.  %d에 2를 넣어주니까 2칸짜리 d로 출력해주라는 뜻이구나!복PG 만들때, 예를들어 장비템 35개의 메뉴판을 출력할 때한자릿수와 두자릿수가 하나씩 밀려서 for문을 2개로 나눠서 했는데, 이제 그럴 필요 없겠다!! before after