ssh [라즈베리파이id]@[라즈베리파이 ip address]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include <conio.h> UNIX에서는 다중 사용자 방식이라, 독점적인 입력방식인 conio.h를 사용할 수 없다.
//conio.h 표준 라이브러리가 아닌 도스에서 사용하기 위해 만든 라이브 러리이다.
//당연히 리눅스에서는 사용할수 없으며, 당연히 getch나 getche 등의 함수는 사용할 수 없다.
int char_Find(char* str, char deli);
int sLen(char* str);
int chr_Count(char* str, char deli);
char** split(char* str, char deli);
char* Get_Token(int index, char* str, char deli);
int main()
{
char* sql = "select * from student";
char* ret = Get_Token(0, sql, ' ');
printf("%s", ret);
}
int char_Find(char* str, char deli) //문자열 str에서 문자 deli를 순차적으로 찾고 찾으면 해당 인덱스를 리턴
{
int i = 0;
while(*str++) //C에서만 허용
{
i++;
if(*str == deli) return i; //찾았을 때 인덱스 반환
}
return -1; //없을 때 -1 반환
}
int sLen(char* str)
{
int i = 0;
while(*str++) i++;
return i;
}
int chr_Count(char* str, char deli)
{
int i = 0;
while(*str++)
{
if(*str == deli) i++;
}
return i;
}
char** split(char* str, char deli)
{
int i = 0;
char* str1 = malloc(sLen(str));
char** str2 = malloc((chr_Count(str, deli)+1)*4);
strcpy(str1, str);
*(str2+i++) = str1;
while(*str1)
{
if(*str1 == deli)
{
*str1 = 0;
*(str2+i++) = str1+1;
}
*str1++;
}
return str2;
}
char* Get_Token(int index, char* str, char deli)
{
char** ret = split(str, deli);
return *(ret+index);
}
문자열을 delimiter를 기준으로 split하여 원하는 인덱스의 문자열을 리턴해주는 Get_Token 함수를 라즈베리파이에서 C로 구현 해 보았다.
C#에서 DB를 다룰 때 간단하게 만들어서 나름 유용하게 사용하였는데 파이썬, C#같이 게으른 언어를 계속 사용하다가 오랜만에 C를 사용하니 겨우 이거 구현하는데도 살짝 얼타게된다.