[완료] C 언어 삼항연산자 부분에서

wowns0224의 이미지

1 #include<stdio.h> //stdio.h라는 헤더파일을 포함시킨다.
2
3 int main(void) //main함수 시작
4 {
5	char ch4[9]; //ch4라는 문자열 변수 선언
6	char ch5[10]; //ch5라는 문자열 변수 선언
7	int si; //si라는 int형 변수 선언
8	int s; //s라는 int형 변수 선언
9	
10	printf("이름 입력:"); //이름 입력을 출력
11	scanf("%9s",ch4); //문자열 4개를 받아서 ch4에 저장
12	
13        printf("학번 입력:"); //학번 입력 출력
14	scanf("%d",&si); // 10진수 정수를 받아 면수 si에 저장
15	
16        printf("성별 입력(남자:1, 여자:2):"); //성별 입력(남자:1, 여자:2)출력
17	scanf("%d",&s); //10진수 정수형 데이터를 받아 변수 s에 저장
18
19	ch5 = (s == 1) ? "남자" : "여자"; //만약s가 1이면 ch5에 남자를 대입하고, 그렇지 않으면 여자를 대입
20	printf("%9s\t%9s\t%9s\n","이름", "학번", "성별"); //이름 학번 성별을 각각 출력
21	printf("%11s\t%13d\t%9s\n",ch4, si, ch5); //ch4와 si,ch5에 저장되있는 값을 출력
22
23	return 0; //0 반환
24 }

ch5 = (s == 1) ? "남자" : "여자"; //만약s가 1이면 ch5에 남자를 대입하고, 그렇지 않으면 여자를 대입

이부분에서 에러가 나는데요..

조언좀.. 부탁드립니다./

익명 사용자의 이미지


ch5 = "남자" ;

도 해보시고, strcpy도 참고하시고..

empty2fill의 이미지


문자 배열(ch5)에 문자열 포인터("남자", "여자" 문자열 상수의 주소)를 저장하려고해서 그래요.

char ch5[10];를 char *ch5로 변경해보세요.

——
———
Life is a tragedy when seen in close-up, but a comedy in long-shot. - Chaplin, Charlie -

wowns0224의 이미지

이미 해봤는데 안됩니다.

empty2fill의 이미지

컴파일러 버전과 사용하는 운영체제 알려주세요.

컴파일러 에러 메시지도 알려주세요.

자기 문제를 잘 설명하는 것도 능력이에요^^

저는 gcc version 4.5.1에서 문제 없이 컴파일되고 실행되었습니다.

——
———
Life is a tragedy when seen in close-up, but a comedy in long-shot. - Chaplin, Charlie -

wowns0224의 이미지

WinXP에 VC++ Express 2008 입니다.

에러메세지는

-----------------------------------------------------------------------------------------------
1>------ 빌드 시작: 프로젝트: 20110425_homework, 구성: Debug Win32 ------
1>컴파일하고 있습니다...
1>20110425_homework.c
1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\20110425_homework\20110425_homework\20110425_homework.c(11) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf' 선언을 참조하십시오.
1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\20110425_homework\20110425_homework\20110425_homework.c(14) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf' 선언을 참조하십시오.
1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\20110425_homework\20110425_homework\20110425_homework.c(17) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf' 선언을 참조하십시오.
1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\20110425_homework\20110425_homework\20110425_homework.c(19) : warning C4047: '=' : 'char [10]'의 간접 참조 수준이 'int'과(와) 다릅니다.
1>c:\documents and settings\administrator\my documents\visual studio 2008\projects\20110425_homework\20110425_homework\20110425_homework.c(19) : error C2106: '=' : 왼쪽 피연산자는 l-value이어야 합니다.
1>빌드 로그가 "file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\20110425_homework\20110425_homework\Debug\BuildLog.htm"에 저장되었습니다.
1>20110425_homework - 오류: 1개, 경고: 4개
-----------------------------------------------------------------------------------------------

이렇게 되어있습니다.

결과 첨부합니디.
성별 부분이 이상하게.....^^;

댓글 첨부 파일: 
첨부파일 크기
Image icon 123.JPG24.03 KB
ymir의 이미지

empty2fill 님이 답을 말씀하셨네요..

위의 ch5 는 array name 으로, constant pointer 로 취급되기 때문에..
여기에는 값을 assign 할 수 없습니다.
즉, 에러 메시지에 나온대로 l-value 로 쓸 수 없다는 뜻이죠.

const char *ch5; 와 같이 pointer 변수로 바꾸고 다시 빌드해 보세요.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

세벌의 이미지

에러의 원인이 삼항연산자는 아닌 것 같은데... 다시 잘 연구해 보셔요 :)

라스코니의 이미지

영어로 했을 때도 에러가 나나요?

wowns0224의 이미지

보시는 바와 같이 성별 부분에서 이상하게 출력이 됩니다.

댓글 첨부 파일: 
첨부파일 크기
Image icon 123.JPG24.03 KB
wowns0224의 이미지

ch5 == (s == 1) ? "남자" : "여자";
이렇게 써주게 되면 컴파일이 되긴합니다만......
위에 제가 결과 스샷 올려 놓은 것과 같이 이상한 값이 출력됩니다.

anfl의 이미지

char *ch5;


댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.