반응형

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언어 이름 성적 입력 받아 이름순 정렬해서 출력


 

반응형

'Computer > Programing' 카테고리의 다른 글

c언어 구조체  (0) 2013.12.28
c언어 문자열(1)  (0) 2013.12.25
c언어 2차원 배열  (0) 2013.12.21

+ Recent posts