무료
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
배열대신 포인터 arithmetic으로 써야하는 이유가 있을까요?
배열대신 포인터 arithmetic으로 써야하는 이유가 있을까요?
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
search_song함수의 ptr_snode = ptr_snode;의 의미가 궁금합니다
void search_song(char* artist, char* title) { Artist* ptr_artist = find_artist(artist); if (ptr_artist == NULL) { printf("No Such artist exists."); return; } SNode* ptr_snode = ptr_artist->head; while (ptr_snode != NULL && strcmp(ptr_snode->song->title, title) < 0) // 없음 ptr_snode = ptr_snode; if (ptr_snode != NULL && strcmp(ptr_snode->song->title, title) == 0) {// 존재 printf("Found:\n"); print_song(ptr_snode->song); } else { printf("No such song exists.\n"); return; } } 다음의 코드에서 while문의 ptr_snode = ptr_snode;의 의미 설명을 부탁드려도 될까요 ?? 어떤 역할을 하는 코드인지 모르겠네요 ㅠ
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
스택 구현
stack 구현부터 응용편을 듣고 이해한 다음 선생님께서 알려주신 코드를 직접 작성해서 실행시키면 동작이 되질 않습니다...ㅠ 일부로 큰 틀만 강의 해주시는건지 그렇지 않다면 왜 오류가 발생하는지 궁금합니다.
- 해결됨C로 배우는 자료구조 및 여러가지 예제 실습
학습 자료 pdf 파일에 관해서
안녕하세요. 얼마 전 부터 수강하게된 학생입니다. 다름이 아니라, 학습 자료가 올라와있는 링크가 있었는데 최근들어 접속이 안돼서 자료를 받지 못하고 있습니다. 혹시 자료를 받을 수 있는 다른 곳은 없을까요?
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
포인터 참조 질문
names가 point형으로 선언되어 있고, names[i]에 이름이 저장된 메모리의 주소값이 저장된 것으로 이해했습니다. printf("%s", name[i])을 하면 바로 name 주소 값이 아니라 입력했던 string이 나오는게 잘 이해가 안됩니다. 역참조로 *name[i]를 해야 이름이 나올 것 같은데 아닌게 좀 이해가 안됩니다.
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
redefinition; different basic types 오류
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #define CAPACITY 100 #define BUFFER_SIZE 20 char* names[CAPACITY]; /*names*/ char* numbers[CAPACITY]; /*phone numbers*/ int n = 0; /*number of people in phone directory*/ void add(); void find(); void status(); void remove(); int main(void) { char command[BUFFER_SIZE]; while (1) { printf("$ "); scanf("%s", command); if (strcmp(command, "add") == 0) add(); else if (strcmp(command, "find") == 0) find(); else if (strcmp(command, "status") == 0) status(); else if (strcmp(command, "delete") == 0) remove(); else if (strcmp(command, "exit") == 0) break; } return 0; } void add() { char buf1[BUFFER_SIZE], buf2[BUFFER_SIZE]; scanf("%s", buf1); scanf("%s", buf2); names[n] = _strdup(buf1); numbers[n] = _strdup(buf2); } void find() { char buf[BUFFER_SIZE]; scanf("%s", buf); int i; for (i = 0; i < n; i++) { if (strcmp(buf, names[i]) == 0) { printf("%s\n", numbers[i]); return; } } printf("No person named '%s' exists.\n", buf); } void status() { int i; for (i = 0; i < n; i++) printf("%s %s\n", names[i], numbers[i]); printf("Total %d persons.\n", n); } void remove() { char buf[BUFFER_SIZE]; scanf("%s", buf); int i; for (i = 0; i < n; i++) { if (strcmp(buf, names[i]) == 0) { names[i] = names[n - 1]; numbers[i] = numbers[n - 1]; n--; printf("'%s' was deleted successfully.\n", buf); return; } } printf("No person named '%s' exists.\n", buf); }
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
한글이 깨지는 경우 어떻게 해결하나요?
한글이 깨지는 경우 어떻게 하나요?
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
안녕하세요. c언어 독학중인 학생입니다.
안녕하세요. c언어 독학중인 학생입니다. 저도 정말로 선생님의 수업을 듣고 완벽하게 다 했으면 좋겠지만 정말 과제로 내주신걸 못하겠더라고요... 수업중에 스스로 하라고 하셔서 이제 빈칸으로 두셨는데... 혹시 그러한 것들에서 완성한 c파일들을 받을 수는 없을까요?
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
search 함수의 선언 궁금증
search 함수는 main 문 위에 선언을 하지 않고, main 밑에 정의만 하여도 오류가 나지 않습니다. 이게 컴파일러의 차이인지, 혹은 search함수가 main문에서는 호출되지 않고, 다른 함수들에서만 호출되기 때문인지 궁금합니다. search 함수는 왜 main문 위에 선언해주지 않아도 오류없이 실행이 되는 걸가요?
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
두번째 예제 질문있습니다!
두번째 예제 맨 마지막에 compressed[i] = '\0'은 \n이 들어가있는 위치에 널문자가 들어가는 건가요? 문자열 입력 시에 \n도 문자열에 들어가는 건지 궁금합니다
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
메모리 동적 할당에서 메모리공간을 확장시킬 때
메모리 동적 할당에서 메모리공간을 확장시킬 때, 50분쯤에 있는 코드에는 원래 array에 할당되어있던 메모리 공간이 쓰레기값이 되어버리는 하자가 있다고 하셨는데요. 그렇다면 저 코드 대신에 realloc을 사용하는 방법이 있는 걸로 알고있는데요! realloc을 쓰면 안좋은 점이라도 있는건가요?
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
realloc함수 쓰지 않는이유
realloc함수로 메모리를 재할당하지않고 reallocate함수를 따로 만드는이유가 뭔가요?
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
안녕하세요 교수님. free()관련해서 질문 있습니다.
안녕하십니까. 이렇게 좋은 강의 무료로 공부할 수 있게 해주셔서 너무 감사합니다. 이번 강의에서 궁금한 부분은 유저 함수 `remove()`에 대한 부분입니다. 중간에 `strdpu()`의 내부구조는 이와 비슷하다고 하시면서 보여주신 코드에는 `malloc()`함수를 사용해서 메모리를 동적으로 할당 받는다는 것을 알았습니다. 이번 강의의 `remove()` 함수를 보면 삭제할 요소에 마지막 요소의 주소 값을 넣는 것을 보았는데 이 경우에 heap 영역에 남아있는 유저의 데이터를 free()를 사용하여 할당 해제하고 싶습니다. 이런 경우에는 주소값을 대입하기 이전에 삭제할 요소의 두 주소값을 free()에 넣어주면 되는걸까요?
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
동적으로 할당된 메모리의 life time 관련하여 질문 있습니다.
동적으로 할당된 메모리는 free()함수를 호출하지 않는 이상, 계속 유지된다고 하셨는데요.프로그램이 끝나고도 계속 유지되는 건지, 프로그램이 종료되면 전역 변수처럼 소멸되는 건지 궁금합니다.
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
Node에 대한 코드 안에 링크필드 선언할 때
struct node next와 struct node prev로 쓰셨는데 저것을 포인터 형으로 적어야 하는 것 아닌가요??포인터형이 아니라면 컴파일이 안되지만 만약에 된다면 저대로 구조체 안에 다른 구조체가 메모리 할당 된다고 볼 수 있나요?
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
stack 구현에서 동적할당중 형변환의 유무에 관한 질문
안녕하세요, 강의 잘 수강하고 있습니다. 다름이 아니라, array를 이용한 stack의 create()함수에서는 Stack s = (Stack)malloc(sizeof(struct stack_type))을 썼는데, linked list를 이용한 stack의 create()함수에서는, malloc 앞에 (Stack)가 빠져있습니다. 혹시, 형변환을 하지 않아도 되는 특별한 이유라도 있는건가요??
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
find함수가 제대로 작동을 안합니다
Node find_item(char item) {Node *temp = head;while (temp!=NULL) { if (strcmp(temp->data, item) == 0) { return temp; } else { temp = temp->next; }}}이렇게 쓰고 메인 함수에Node head = (Node )malloc(sizeof(Node));head->data = "monday";head->next = head;Node *tem=find_item("monday");printf("%s", tem->data);이런 식으로써넣었는데 아무것도 안나오더라구요 왜그럴까요 그리고 왜 함수들을 void형식이 아닌 Node 형식으로 만드나요?
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
3강 문자열에 등장하는 코드에 관한 질문입니다.
```/ strdup이 비표준이라 같은 기능을 하는 코드를 main내에 직접 삽입하였습니다. /include include int main() {int i=0;char *words[100];char buf[100];while(i<4 && scanf("%s", buf)!=EOF) { char * tmp=(char *)calloc(strlen(buf)+1, sizeof(char)); /* 1 */ if(tmp!=NULL) { strcpy(tmp, buf); words[i++]=tmp; }}for(i=0 ; i<4 ; ++i) { printf("%s\n", words[i]);/* 2 */return;}```저는 위 코드를 다음과 같이 이해했습니다. 즉, <tmp 포인터는 블록안에서 선언되었기 때문에 while문을 빠져나오면 words[n]의 각 첫바이트의 메모리 주소를 저장한 tmp안의 주소값은 생성과 소멸을 반복하다 마지막에 자동 소멸되나, 각각의 words[n]에 담긴 문자열은 소멸되지 않는다. 또한, 원하는 결과를 다 얻고 나서 calloc에 의해 생성된 메모리를 만일 소거하고 싶다면,위 '2' 자리에for(i=0 ; i<4 ; ++i) {free(words[i]);를 삽입하면 된다.>위와 같이 해석하는 것이 맞는지 확인해 주시면 고맙겠습니다. 덧붙임> 좋은 강의 올려 주셔서 고맙습니다. 남은 파트도 열심히 잘 들을께요^^
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
컴파일 실행 중에 오류가 났는데, 구글링으로도 해결방법을 모르겠어서 남깁니다.
에디터는 VSCode 쓰고 있습니다. 컴파일 실행할 때 C:UsersUserAppDataLocalTempcc6TaPRa.o:14_3_main.cpp:(.text+0x47): undefined reference to read_line(_iobuf*, char*, int)' C:\Users\User\AppData\Local\Temp\cc6TaPRa.o:14_3_main.cpp:(.text+0xf6): undefined reference toread_line(_iobuf, char, int)' C:UsersUserAppDataLocalTempcc6TaPRa.o:14_3_main.cpp:(.text+0x13b): undefined reference to read_line(_iobuf*, char*, int)' C:\Users\User\AppData\Local\Temp\cc6TaPRa.o:14_3_main.cpp:(.text+0x180): undefined reference toread_line(_iobuf, char, int)' collect2.exe: error: ld returned 1 exit status string_tools.h에 정의한 read_line함수를 읽지 못하는 것 같은데, 이유를 모르겠습니다
- 미해결C로 배우는 자료구조 및 여러가지 예제 실습
21분23초 char **tmp1에서 캐스팅을 해주는 이유는 무엇인가요?
char tmp1 = (char )malloc(capacitysizeof(char )); 에서 (char )로 캐스팅을 해주는 이유가 무엇인가요?C언어 기초와 병행하며 강의를 듣는 중이라 잘 이해가 되질 않네요! 도와주세요!