c언어에서 문자열 다룰 때 초기에 선언하거나 입력함수를 이용해 입력 받지 않고,
char name[10];
name="LZena";
이렇게 입력 받으면 오류가 발생하게 됩니다.
에러 내용..
--------------------Configuration: a - Win32 Debug--------------------
Compiling...
a.c
C:\Users\BGK\Desktop\asdf\a.c(5) : error C2106: '=' : left operand must be l-value
Error executing cl.exe.
a.exe - 1 error(s), 0 warning(s)
그렇다면 방법이 없는가?
문자열 관련 함수를 이용 하면 됩니다.
문자열 관련 함수들을 사용하기 위해서
소스 상단에
#include <string.h> 를 추가 해줍니다.
string.h 에 관한 내용 보기
http://ko.wikipedia.org/wiki/String.h
그 중에서 지금 하려고 하는 작업은 strcpy() 함수를 이용하면 되겠군요.
char * strcpy ( char * destination, const char * source ); 출처 : 위키백과
#include <stdio.h> #include <string.h> int main() { char name[10]; strcpy(name,"LZena");
printf("입력된 문자열 : %s ",name); return 0; } |
strcpy 인자 중 왼쪽편이 값이 들어가야 할 배열, 우측이 입력될 문자열 or 복사 될 배열 |
@ 이 외 자주 쓰이는 문자열 관련 함수들...
- strlen(char str[]); str의 길이를 리턴 해줍니다.
#include <stdio.h> #include <string.h> int main() { char name[20]="ITnG by LZena"; printf("문자열 길이 : %d \n",strlen(name)); printf("배열의 크기 : %d ",sizeof(name)); return 0; } |
공백 포함한 문자열 길이를 반환합니다. sizeof함수는 문자열 관련 함수는 아니지만 배열의 크기를 반환 해주는 함수입니다. |
- strcat(char str1[], char str2[]); str2를 str1의 뒤에 붙여줍니다.
#include <stdio.h> #include <string.h> int main() { char str1[20]="ITnG by"; char str2[20]="LZena"; printf("합치기 전 : str1 : %s, str2 : %s\n",str1, str2); strcat(str1,str2); printf("합친 후 : str1 : %s, str2 : %s\n",str1, str2); return 0; } |
합친 후 str1은 : ITng byLZena, LZena가 str1의 내용 바로 뒤에 붙은걸 볼 수 있습니다. |
- strcmp(str1, str2); 문자열 두개를 비교해 같으면 0을, str1이 작으면 -1, str1이 크면 1을 반환합니다.
대 ,소문자를 구분하며 알파벳 순으로 비교했을 때 크다,작다를 말합니다.
#include <stdio.h> #include <string.h> int main() { char str1[20]="apple"; char str2[20]="banana"; printf("apple : banana반환 값 : %d\n",strcmp(str1,str2));
strcmp(str2,"apple"); printf("apple : apple 반환 값 : %d\n",strcmp(str1,str2));
strcmp(str1,"cherry"); printf("cherry : apple반환 값 : %d\n",strcmp(str1,str2)); return 0; } |
이런 내용들을 이용해서 문자열 순으로 정렬 하는데 이용할 수 있습니다. 참고 할만한 소스 [지식in/c언어 관련] - c언어 이름 성적 입력 받아 이름순 정렬해서 출력 |
'IT > Programing' 카테고리의 다른 글
c언어 구조체 (0) | 2013.12.28 |
---|---|
c언어 문자열(1) (0) | 2013.12.25 |
c언어 2차원 배열 (0) | 2013.12.21 |