코딩허접입니다 C언어 공부를 하려고하는데 바로막혔습니다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1

uiucpass의 이미지

갓 제대하고나서 바로 프로그래밍을 공부하겠다는 마음에 샀던 headfirstC 를 공부하려하는데 처음부터 막히네요;

옛날에 c언어도 했는데 기억도안나고 코드가 잘못된건가 미치겠습니다 ;;;;프로그램도 뭘써야할지 모르겠습니다

1.첫번째 난관으로는 gcc파일을 먼저설치하라고 책에 적혀있어서 어떻게 깔았더니 소스를 어디써야하는지 모르겠습니다.

메모장에 코드를 적은 뒤 마지막에 .c를 붙여서 소스파일로 만들어서 cmd창에다가 gcc ~ .c - o ~ 하는 형식으로 하는 것 맞나요?

2.옛날에 열혈강의 공부할때 깔았던 visual c를 그냥 gcc대신에 쓰려고 하는 데 상관없나요? gcc는 불편하고 visual c++ 처럼 어떤 응용파일이 있는것도 아닌데 왜 쓰는거죠 도데체..? vmware 깔아서 리눅스로 gcc를 해보았는데 "vi"로 코딩 한페이지 하다가 답답해 죽는줄알았습니다. 머 지우는것도 마음대로 쓱삭 안지워지고 명령어 따로있고 ;;하;;(리처드 스톨만 개객ㄱ.. )

아...c언어 공부하고싶은데 무슨 프로그램으로 해야할지 모르겠습니다

3.책에 나와있는 코드 그대로 썼는데 왜 visual c++ 에는 오류가 나는걸까요..

코드인 즉슨

#include

#include

int main()

{

char card_name[3];

puts("Write your card number: ");

scanf("%2s", card_name);

int val=0;

if (card_name[0] == 'K') {

val=10;

} else if (card_name[0] == 'Q') {

val=10;

} else if (card_name[0] == 'J') {

val=10;

} else if (card_name[0] == 'A') {

val=11;

} else {

val=atoi(card_name);

}

printf("Here is the value of card: %i\n", val);

return 0;

}

입니다. 근데 더 짜증나는건 책에 있는 그대로했는데

저 코드에서 int val=0; 을 char card_name[3]; 바로 밑에 적으면 아무 이유 없이 실행이됩니다.

변수선언은 앞에 미리 다하는게 맞는거고, 책이 잘못된건가요?

제발 글을 읽어주시어서 도움을 주소서;정말로 부탁드립니다 ㅜㅜ

익명 사용자의 이미지

1. gcc [대상파일] -o[option을 줌] [실행할 파일] 형식은 맞습니다.
지금 gcc를 쓰시는 곳이 윈도우 쪽에서 실행하시는 걸로 알고 있는데요. 컴파일러를 따로 설치해서 하시는게 아니라면 차라리 visual studio로 작성 및 컴파일 하시는게 낫습니다.
gcc는 주로 리눅스에서 쓰이는 컴파일러로 알고 있습니다.
vi editor가 확실히 gui환경에 익숙하신 분들은 어려움이 많습니다.
c의 기초부터 배우시는 거라면 자신이 익숙한 환경에서 하는게 맞다고 봅니다.(도구는 도구일 뿐이기에...)

2. 최근 컴파일러는 중간에 변수 선언을 하는 것을 적용하는 걸로 알고있습니다.
실제로 작성자 분이 보시는 열혈c 초반에서도 그리 나왔있고요. 하지만 c의 컴파일러가 어떤 기준이냐에 따라 에러를 뿜어내는 컴파일러도 있으니 변수를 선언할 시에는 항상 맨 처음에 해주는 것이 옳다고 생각합니다.

3. visual c++ 같은 경우는 컴파일러 자체가 c 컴파일러를 지원하지 않습니다. 물론 c의 객체지향성이 추가된 것이 c++이라고 생각하실 수도 있겠습니다만 전혀 다른 언어라고 보시면 편하겠습니다.
따라서, visual c++로 컴파일 할 시에는 설정을 건드려 줘야 하는 것으로 알고 있습니다. 그에 반해 gcc는 c표준에 맞게 컴파일러가 작성되어 있는 것으로 알고있습니다. 왜냐하면 리눅스 자체 커널도 c로 작성되어 있기 때문인 것으로 사료됩니다.

vi editor로 일일이 명령어를 넣어서 하시는 것이 답답하시다면 (분명 방향키도 hjkl식으로 먹힐 것이기 때문에) sudo apt-get install vim을 추가적으로 작성하시는 것도 나쁘지 않습니다.
윈도우에서 하실거면 dev-c도 괜찮다고 봅니다.

(제가 한 말 중에도 오류가 있을듯 하니 오류가 있는 부분은 지적해주시면 감사하겠습니다.)

uiucpass의 이미지

귀찮은 질문임에도 일일에 하나하나 다 답변해주셔서 감동했습니다. 덕분에 더 프로그래밍공부를 열심히 할 수 있을 것 같습니다. 클리앙에서도 같은 질문을 했는데
Dev-c 와 visual studio 2015 community edition 고민했는데 열혈때 visual 써봐서 익숙한 visual studio 2015 community edition로 써보기로했습니다. dev-c도 알아보니 굉장히 괜찮네요 ㅎㅎ 다양한 환경을 접해봐야한다고 다들 그랬었는데 dev-c도 한번 써봐야겠습니다. 변수 부분은 알아보니 c99규격을 지원하면서 변수를 중간에 둬도 상관없이 바뀌었다고하네요(제가 쓰는 프로그램들은 c89 때 꺼라 ㅎㅎ ) "처음 배우는 언어는 파이썬으로 해야한다!"는 글 때문에 파이썬 간보는식으로 했다가 c언어를 시작했는데 프로그램 설치 부터 힘드네요 요놈은 ;;; 하 앞으로 많이 여쭤봐도 괜찮겠지요;;;^^

익명 사용자의 이미지

gcc같은 경우는 gnu compiler collection이라고 하여 linux에서 사용하는 컴파일러 입니다.(윗 글에 대해서 오해를 하실 소지가 있다고 판단하여 댓글 추가합니다.)

shint의 이미지

------------------------------------------------
1.첫번째 난관으로는 gcc파일을 먼저설치하라고 책에 적혀있어서 어떻게 깔았더니 소스를 어디써야하는지 모르겠습니다.

소스에 따라서 다릅니다.

#include <stdio.h>
 
int main(int argc, char ** argv)
{
    return 0;
}
 
gcc -o test test.c

#include <iostream>
 
#using namespace std;
 
int main(int argc, char ** argv)
{
    return 0;
}
 
g++ -o test test.cpp

------------------------------------------------
2.옛날에 열혈강의 공부할때 깔았던 visual c를 그냥 gcc대신에 쓰려고 하는 데 상관없나요?

Visual Studio 2005 이상에 Express 버전이 무료
Visual Studio 2013 이상에 Community 버전이 소규모사용자에 한해서 무료

DevC++ 도 있습니다.

cygwin 을 설치해서. 윈도우에서 gcc와 g++를 사용할 수 있습니다.

Qt SDK 가 있습니다.

------------------------------------------------
3. 저 코드에서 int val=0; 을 char card_name[3]; 바로 밑에 적으면 아무 이유 없이 실행이됩니다.

VS6.0에서 C 언어를 사용할경우. 변수선언을 맨위에 적어줘야. 컴파일 오류가 없었던것으로 기억합니다.

DevC++ 로는 오류가 보이지 않고 있습니다.

#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char ** argv)
{
    char card_name[3];
    int val=0;
    puts("Write your card number: ");
 
    scanf("%2s", card_name);
 
    if (card_name[0] == 'K') 
    {
        val=10;
    } 
    else if (card_name[0] == 'Q') 
    {
        val=10;
    } 
    else if (card_name[0] == 'J') 
    {
        val=10;
    } 
    else if (card_name[0] == 'A') 
    {
        val=11;
    } 
    else 
    {
        val=atoi(card_name);
    }
    printf("Here is the value of card: %i\n", val);
    return 0;
}

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

uiucpass의 이미지

하루종일 저 3문제 때문에 해멨었는데 이제야 모두 해결했네요 ㅎㅎ visual studio를 설치하는데 너무 오래걸려서 dev-c를 설치했는데 이건또 뭐 신세계네요 ㅎㅎ 너무 간편하고 편리해서 c언어 공부에 집중할 수 있겠습니다. ^^

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.