Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[2696] Re:정렬안되요 ㅜㅜ help!!
김진호.불사새 [phenix96] 1162 읽음    2003-05-26 15:10
char s[5][10];
에서 s[0]의 값은 '쓰기가 가능한 포인터변수'가 아닙니다.

s[5][10]에 의해 50개의 char 가 메모리에 잡히고

그것을 10개씩 5개로 나누어 컴파일러가 관리합니다.

s[1]을 하게 되면 컴파일러는 *(s+1*10)를 계산하는것처럼 말이죠...

실제로는 *(s+1)에서 1에 알아서 배열 크기인 10을 곱해줍니다...

이렇게 얻어진 s[1]은 s[5][10]으로 길게 늘어선 배열의 실제 주소를 나타내 줍니다.

즉 s[1]과 &s[1]은 같은 값입니다.

s[1]=s[0];
이것은 실행되지 않습니다.

위 코드는 &s[1]=s[0]; 와 같은것이며 &s[1]은 메모리의 실제 주소이므로 예를들어 &s[1]이 0x12345678이라면

0x12345678=s[0];
과 같습니다.

숫자에 값을 대입하는것과 같은것이죠.

그냥 배열로 문자열을 정렬 하시려면 s[0], s[1]..을 비교하셔서 각각 위치를 교환하세요

char temp[10];
strcpy..이러한식의 함수를 사용하시거나 for를 하나 더 돌려서..

기존 소스에서 간단하게 변경하시려면

char *ss[5]; // 배열을 5개 잡고 그 안에는 char*형 데이타가 들어가게끔...

ss[0]=s[0];
..

이렇게 하신후 ss를 이용해서 정렬을 하세요

당연히 s는 변하지 않습니다. ss에 들어있는 문자열 s들의 순서가 변하지요



C하는토끼 님이 쓰신 글 :
: 안녕하세요~~~
: 정말 개념이 안서서 그러는데 로직의 상태가 뭐가 잘못된건지 봐주세요.
: 문자열을 최대 5개까지 받아서 정렬하는 프로그램입니다.
: 물론 문자열은 크기는 10자 이내이구요.
: //◀ 화살표 부분에 Lvalue Required 라는 에러가 뜨면서 안되는데요
: 뭐가 문제 일까욤?
: 누가 명쾌한 해답을... ㅠㅠ;
:
:
:
:
: #include <stdio.h>
: #include <conio.h>
:
: main()
: {
:    static char s[5][10];
:    int i, j,num1;
:    char *temp;
:    printf("몇문자를 입력하시겠어요=>");scanf("%d",&num1);
:    for(i=0;i<num1;i++) {
:    printf("문자열을 입력하세요=>");scanf("%s",s[i]);}
:
:    for(i=0;i<num1;i++)
:      printf("%s \n", s[i]);
:      printf("--------------\n");
:
:      for(i=0;i<num1;i++)
:       for(j=0;j<num1;j++)
:         if(*s[i] < *s[j]) {
:           temp=s[i] ;
:           s[i] = s[j] ;    //◀
:           s[j] = temp;     //◀
:        }
:
:
:    for(i=0;i<5;i++) printf("%s \n", s[i]);
:    getch();
: }
:
:

+ -

관련 글 리스트
2694 정렬안되요 ㅜㅜ help!! C하는토끼 1261 2003/05/26
2696     Re:정렬안되요 ㅜㅜ help!! 김진호.불사새 1162 2003/05/26
2698         다시 소스좀 확인해 주세요. C하는토끼 1186 2003/05/26
2699             Re:다시 소스좀 확인해 주세요. 김진호.불사새 1194 2003/05/26
2706                 감사합니다. ㅜㅜ; 드디어...[냉무] C하는토끼 1281 2003/05/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.