묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Windows 시스템 프로그래밍 - 기본
메모리 맵 강의 예제의 결과가 이상합니다.
과제로 내주신 memcpy 문제는 압축도 풀리고 파일도 제대로 열립니다.그런데 예제의 strcpy_s()의 경우는 MYFILE.TXT를 열어보면 문자가 다깨지고 길이도 이상합니다.디버그 모드로 메모리를 보면 값이 제대로 들어가는게 보입니다만...해결방법을 찾지 못하겠습니다. 해결법이 있을까요?
-
미해결홍정모의 따라하며 배우는 C언어
6-1 강의 질문
반복문 while (status == 1) 일때조건문이 true여야 실행 되는 거 아닌가요? 근데 status 에 10, 20 이런식으로 입력해도 실행이 되는 이유를 모르겠어요..ㅠㅠ
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
스택의 POP코드 질문드립니다.
안녕하세요 오랜만에 질문드립니다.현재 가정을 헤드노드->Test03->Test02->Test01->테일노드 이렇게 있다고 가정을 했을 때pPop->pNext->pPrev = g_TailNode.pPrev; 이 코드에서 질문있습니다.제가 이해한것을 풀어쓰느라 조금 길거 같습니다.흐름상 pop 구조체 포인터가 Test03노드를 가리키고 있고 헤드의 다음노드를 Test02로 바꾸는것까지 이해했습니다. 그다음 pop 다음 노드의 이전 노드 즉 Test02의 이전 노드가 테일 노드의 이전 노드를 가리킨다고 하는데 현재 흐름 상 보면 Test03의 다음노드의 이전노드가 Test01노드라고 하는걸로 해석이 됩니다. 제가 어느 부분에서 이해를 못한 건지 모르겠습니다.그리고 다음 코드를 이렇게 고쳐도 출력에는 이상이 없는 것으로 확인됩니다.
-
해결됨독하게 시작하는 C 프로그래밍
연령별 버스 요금 계산 (문자열 선언 및 출력 질문)
안녕하세요. 불철주야 고생 많으십니다! 해당 예제의 최종 출력 결과물에 "성인", "영유아" 등의 문자열을 추가로 반영하고 싶습니다.초기 변수 선언 :int age = 0, fee = 1000;double rate = 0.0;char[32] = { 0 }; 조건문 : name = "성인".... 최종 결과물은 다음과 같이 나타냈습니다.printf("나이: %d, %s, 요금: %.0f", age, name, fee*rate);위와 같이 진행했을때 문자열 관련한 오류가 뜹니다.도움 받고 싶습니다. 감사합니다!
-
해결됨독하게 시작하는 C 프로그래밍
연령별 버스 요금 계산 문제에서 범위에 따른 결과 차이
저는 65세를 기준으로 제어문을 만들어 보았습니다。 다만 어린이 요금 부분에 (4<= age <= 13과(age <=13)사이에 결과값에 차이가 생기는데 왜 차이가 생기는지 궁금해요
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
adtFileIO 예제코드관련 질문 있습니다.
코드를 분석하다 드는 의문점이 있어 질문드립니다.실제 자료노드와 이를 추상화 한 MYNODE로 데이터베이스가 구축되어 있는데 여기에 MYNODE를 기준으로 파일 입출력을 연동시킨 것이 이번 예제의 핵심이라고 보입니다. 이렇게 한 이유가 파일의 일부를 메모리로 옮겨올 수 있기 때문(캐싱)이라고 하셨는데 이 캐싱의 정확한 개념이 궁금합니다. 해당 예제의 offset변수를 보면 파일의 처음부터 끝까지 모든 자료에 대하여 카운트정보를 담고 있는 것으로 보입니다. 즉 파일의 일부가 아닌 전부가 MYNODE기준 메모리상 데이터에 연동되고 이 후 선택노드의 추가 데이터만 메모리상데이터에 추가되는 것으로 보이는데 캐싱이라는 개념이 파일데이터들의 일부만 메모리에 옮기는 것이 아니라 일단 모든 목록(인덱스)를 올린 후 선택 노드의 데이터만 추가하는 개념인 것인지. 아니면 원래는 파일데이터의 목록까지도 일부만 올리는 개념인데 예제에서는 간략화하여 설명된 것인지 궁금합니다.SaveNewDataToFile()함수를 살펴보면 pTmp->bNew 불리언 변수가 true일 때 파일쓰기가 일어나는데 이는 기존 데이터가 존재하는 노드인 경우 데이터를 수정시 파일쓰기가 되지 않는 오류가 있지 않나 생각됩니다. 즉 commit이 노드데이터 수정 후 일어나지 않으면 프로그램 종료시 호출되는 SaveNewDataToFile()함수로는 수정데이터의 파일출력이 일어나지 않는 것 아닌가 하는 의문이 듭니다. 두 째 질문은 강의 중에 언급해 주신 부분을 확인했습니다. 감사합니다. 감사합니다.
-
미해결홍정모의 따라하며 배우는 C언어
4.9 그냥 첫번째 n1은 메모리 읽기의 문제가 아니라 그냥 형식 지정자를 일치 시키지 않아서 문제가 아닌가요?
4.9 강의 질문입니다.#include <stdio.h>int main() {float n1 = 3.14f; // 4bytes doublen2 = 1.234; int n3 = 1024;printf(”%d %d %d\n”, n1, n2, n3);}printf는 float를 double을 변환시킨다고 하셨는데. 만약에 float를 강제로 4byte를 가지게 하게 했을 때, 어떤 식으로 나오는 지 출력을 해봤습니다.그럼에도 불구하고 쓰레기값으로 나오더군요.그러면 그냥 첫번째 n1은 메모리 읽기의 문제가 아니라 그냥 형식 지정자를 일치 시키지 않아서 문제가 아닌가요?특히printf(”%lld %lld %d\n\n”, n1, n2, n3); 에서도메모리의 크기를 맞춰주어도 쓰레기 값을 출력해준 것을 보면..// 제 컴퓨터에서는printf("%f %d %d\n\n", n1 ,n2 ,n3) // O X X }가 O X O로 제대로 출력이 됩니다..파일명도 .c로 끝나는데..8분 강의에 제가 이해가 안되서 2시간을 쏟고 있어요.. 뭔가 머리가 아픕니다..
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
ADT강의 관련 질문 있습니다.
항상감사합니다.ADT강의 보고 코드 확인하는 중 질문이 생겨 글 올립니다. 1.동적바인딩과 다형성 등 사용성 증가를 위해 구체 자료를 가리키는 추상화 자료노드를 구성하여 함수로 그 추상화자료노드에 일차적으로 접근하는 개념이 ADT라고 파악되는 데 여기에 함수 포인터를 구조체 맴버로 포함시킨 이유가 궁금합니다. 그냥 구조체 외부에 선언된 getkey 함수를 사용해서 sorting을 해도 기능상 차이는 없을 것 같은데 포함시키신 이유는 객체지향개념을 적용하기 위함인지 아니면 구조체 안의 함수포인터 변수로 실현된 getkey 함수가 외부에 선언된 getkey함수를 사용할 때와 비교해서 실제 기능상 차이가 있는지 궁금합니다. 2.함수포인터는 함수를 가리키는 포인터 변수로 함수의 이름과 같으면 안되는 것으로 알고 있는데 이 예제의 경우 컴파일 되는 것은 구조체 안의 포인터 변수라서 그런 것인지. 궁금합니다. 3.강의에서 언급해 주신 구조체 안의 함수포인터 개념을 너무 흥미있게 들었습니다. 그렇다면 그 개념의 연장선이 객체지향 클래스 개념이라고 보는데 결국 c언어는 절차지향. c++은 객체지향으로 단편적으로 구분되는 것이 아니라 c언어 프로그래밍시 하나의 기능단위 캡슐화를 시도하는 프로그래밍 기법이 객체지향이 아닌지. 그리고 그것을 구현하기 쉽게 만든 것이 c++같은 객체지향 프로그래밍 언어가 아닌가 하는 궁금증이 생겼습니다. 이런 관점에서 보자면 함수포인터는 결국 c언어 안에서 이미 함수형프로그래밍의 개념으로 접근할 수 있는 수단이 아닌지 하는 생각도 듭니다. 이러한 접근이 맞는 것인지 여쭤봅니다. 4.getkey함수가 name 이나 phone을 반환하는데 호출함수이름이 SortListByKey()가 적절하지 않나 궁금합니다. 5.기타 질문으로 lineardatastructure.c 파일 안의 한글이 깨져 보이는 문제가 있는데 비쥬얼 스튜디오 및 윈도우에서 utf-8으로 환경설정을 전부 변경해도 여전히 깨져 보입니다. 다른 해결방법이 있는지 궁금합니다. 감사합니다.
-
미해결
c++ 이상하게 저장되는 코드 질문있습니다
void put2byte(void *dest, uint16_t data){ *(uint16_t*)dest = data; } uint32_t num_data = hdr.get_num_data(); void* offset_array = hdr.get_offset_array(); //오프셋 어레이 받아오기 uint16_t now_data_region_off = hdr.get_data_region_off(); void* data_region = 0; uint16_t off = 0; uint16_t remain_data_region_off = now_data_region_off - input_record_size; put2byte((void*)((uint64_t)offset_array + num_data * 2), remain_data_region_off); 이렇게 되어있는데 remain_data_region_off 이 값이 37이하이면 37이하로 저장되는게 아니라 이상하게 저장이 되는데 무슨 문제인지 모르겠습니다 예를 들어 remain_data_region_off = 37 이면 7717이 저장되는데 num_data가 6일때만 발생합니다 0~5까지는 제가 설정한 값대로 저장이되는데 이유를 모르겠습니다
-
해결됨독하게 시작하는 C 프로그래밍
섹션14 최대값 실습문제
안녕하세요 교수님!개린이(개발자어린이) 실무자 입장에서오랜만에 잊고있던 C언어를 써야할 일이 생겨서강의를 신청했는데 너무 재미있고 유익합니다.완전 입문 보다는 더 심도깊고 폭넓게 알려주셔서 너무 좋습니다.저는 아래와 같이 코드를 작성해봤는데한번 봐주시면 감사하겠습니다. 1.int MaxValue(int a, int b, int c) { int max = a; if (max < b) max = b; if (max < c) max = c; return max;}int main(void){ int num1 = 0, num2 = 0, num3 = 0, finalValue = 0; printf("정수를 3개 입력하시오. "); scanf_s("%d%d%d", &num1, &num2, &num3); finalValue = MaxValue(num1, num2, num3); printf("최대값은 %d 입니다\n", finalValue); return 0;}
-
해결됨독하게 되새기는 C 프로그래밍
pszParam 수정이 왜 Hello World print에도 영향을 미치는지 이해가 잘 안됩니다.
섹션1 문자(배)열 상수는 어디에 저장되는가?에서 4분쯤에 나오는char* pszParam = "Hello World\n";printf(pszParam); printf("Hello World\n"); 여기서 pszParam을 디버거 메모리에서 수정시 아래 hello world가 왜 수정되는지 잘 이해가 되지 않습니다. 기본적으로 다른 메모리 공간에 저장 되어야 될꺼라고 생각되는데 컴파일러가 알아서 최적화 했다고 봐도 될까요? printf("Hello World\n"); 여기를 글자 한개만 더 넣어도 pszParam을 수정해도 아래 print 되는 문자열이 같이 수정되지는 않았습니다. 그리고 질문하면서 궁금해진 점이 printf("Hello World\n");이것만 있을 때 이 hello world! 가 쓰여진 주소를 알 수 있는 방법이 있을 까요?
-
미해결홍정모의 따라하며 배우는 C언어
flag
flag의 기능이 잘 이해가 되지 않습니다. 다른 건 다 이해가 되는데 flag가 true이고 false일 때 어떻게 달라지는지, 예를 들어 flag가 처음에 false로 설정이 됐으면 false인 상태가 유지가 되면 어떻고 true로 바뀌면 어떤지가 이해가 잘 안 됩니다.
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
RangeSearch002 의 singlelist.c 파일 중 질문 있습니다.
강사님 안녕하십니까. 양질의 수업을 제공해주셔서 잘 듣고 있습니다. 다름아니고 질문이 있어서 여쭙고자 게시글 남깁니다.다름아니고 RangeSearch002 프로젝트 중 singlelist.c 파일의 SearchByAgeRange 함수에서 아래와 같은 코드에서 이해가 되지 않는 점이 있습니다. """void** pNodePtrList = malloc(sizeof(void*) * cnt);""" 본 질문의 목적은 아래와 같습니다.ㅇ malloc을 할 때 왜 따로 타입캐스팅을 하지 않았는가? 검색해서 찾아봤을 때 malloc은 타입캐스팅을 해도 되고 안 해도 되지만 제가 한다면 (void *)malloc 으로 썼을 거 같으며, 디버깅했을 때 결과도 동일한 결과물을 제공하는 것으로 확인했습니다.혹시 잘못된 점이 있으면 따끔한 지적 부탁드리겠습니다. 감사합니다. 좋은하루 되십시오.
-
미해결홍정모의 따라하며 배우는 C언어
포인터 초기화 질문
안녕하세요 질문 사항이 있습니다.포인터 변수를 초기화 할 때, 특정 주소값으로 초기화를 할 수도 있나요? 예시)보통의 경우 int *p = null이라고 한다면, int *p = 0x10000000 처럼 특정 주소로 초기화가 가능한가요? 그래서 printf("%d", &p);로 0x10000000번지의 값을 출력할 수가 있을까요?만약 없다면, 특정 주소에 담긴 값을 읽어오는 방법이 있을까요?
-
해결됨독하게 시작하는 C 프로그래밍
독하게 시작하는 C프로그래밍 교재
강사님 독하게 시작하는 C프로그래밍 교재 이번에 재개정 예정이라고 하셨는데 혹시 언제쯤 나올까요?
-
미해결홍정모의 따라하며 배우는 C언어
디버깅이 강사님 처럼 나오지가 않아요..
디버깅이 강사님처럼 깔끔하게 나오지가 않는데 어떻게 강사님처럼 인터페이스가 나오게 가능한가요? 비쥬얼 스튜디오 색말하는건 아니에요
-
미해결홍정모의 따라하며 배우는 C언어
출력이 이상한데 이유를 모르겠어요
제목 그래도 이유를 모르겠어요
-
미해결홍정모의 따라하며 배우는 C언어
코드
전 이렇게 코딩을 했는데 정상적으로 작동하지 않는데 뭐가 문제인 건가요?그리고 bool 타입을 쓴 이유와 작동원리가 이해가 잘 되지 않습니다.
-
해결됨독하게 시작하는 C 프로그래밍
섹션 13 다차원 배열 연습 문제
안녕하세요 강사님 섹션 13 다차원 배열 연습 문제 관련 질문있습니다해당 문제이고 예전 강사님께서 질문에 답변하셨던 내용을 보니 먼저 2중 for문 구조를 사용하지 말고 단일 for문을 두 번사용해서 각각 행과 열의 합의 게산 후 2중 for문 구조로 바꿔보라고 하셨는데 아래는 제가 2중 for문 구조로 작성한 코드이고 그 아래는 단일 for문을 사용해서 작성했는데 강사님께서 말씀하신 게 이 뜻이 맞을까요? 그리고 제가 생각하기에는 이중 for문이 더 간단한거 같은데 단일 for문을 사용해보라는 건 어떤 이유인지 알 수 있을까요?또한 제가 생각하기에 단일 FOR문을 사용하면 각 FOR문에 대한 합계를 구할때 변수 선언을 너무 많이했는데 혹시 이걸 줄일 수 있는 방법이 있을까요? https://www.inflearn.com/questions/1106529/%EC%84%B9%EC%85%98-13-%EB%8B%A4%EC%B0%A8%EC%9B%90-%EB%B0%B0%EC%97%B4-%ED%95%84%EC%88%98-%EC%8B%A4%EC%8A%B5%EB%AC%B8%EC%A0%9C 이중 FOR문 사용 단일 FOR문 사용
-
해결됨독하게 시작하는 C 프로그래밍
strcat(szPath + 17, sizeof(szPath) -17....)에서
뒤에 17을 빼는 이유가 이해가 안갑니다