inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C언어

11.6 다양한 문자열 함수들

1분 34초 함수 구현 질문있습니다.

216

kaisendon

작성한 질문수 15

0

교수님께서는 93번째 줄에 함수 구현하실때 

void fit_str(char* str, unsigned int size)

{

if (strlen(str) > size)

str[size] = '\0';

}

위와 같이 구현 하셨는데요 이러면 사실상 배열에 5번째 글자만 널캐릭터로 바뀌고 "do it!"은 그대로 메모리에 남아있을것 같아서 완전히 문자열을 잘라냈다고 보기는 어렵지 않나요?

궁금해서 msg 배열의 모든 원소를 일일히 출력할수 있게 이하와 같이 함수를 실행해봤는데 실제로 5번째 원소인 , (쉼표) 만 널캐릭터로 바껴서 출력 안되고 나머지 부분은 그대로 배열에 남아있는것을 볼수 있습니다. 

c

답변 1

1

안소

안녕하세요. 

맞습니다. 디버깅 해보시면 do it 은 그대로 남아있습니다!

어차피 puts나 printf 의 출력은 문자열의 '\0'까지만 출력이 되니까 원하는 부분까지만 출력되도록 교수님께서는 그냥 이런 정도로만 구현해주신 것 같아요.  위 예제처럼 이 문자열을 출력하는데만 쓸거라면 잘라냈다고 표현할 수 있겠습니다.

 완전히 기존 뒤에 글자들까지 다 지워버리는 것을 '잘라내다'라고 표현하고 싶으시다면 str[size] 만  '\0' 로 바꾸는 것이 아닌 그 뒤의 문자들도 전부  '\0'으로 덮어버리면 되겠습니다.

아무튼 그냥 교수님께서 그 정도로만 구현해주신 것 같다고 생각해주시면 될 것 같아요! 

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

50

3

main 함수에서 왜 int만 선언이 되는걸까요

1

54

2

8비트 2진수 변환시 왜 1을 더해야하나요?

1

53

2

혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?

1

46

1

프로토타입과 함수간의 인자 불일치

1

72

2

12.12 헤더 관련 질문

1

59

2

Visual Studio Community 2026 사용 문의

1

136

2

Q. 15:30, 부호가 있는 8비트 정수 질문

1

59

2

getchar(), putchar()

1

92

3

강의자리ㅛ

1

78

2

비주얼스튜디오코드로 공부해도 상관없나요?

1

112

2

소스파일안에 여러 파일

1

75

2

F5와 F7의 차이

1

75

2

c = TWO * (a+b); 에서 a와 b는?

1

58

2

; 세미콜론을 붙이는 기준에 문의

1

68

1

Step over 기능 문의

1

52

2

2.6 강의 따옴표 출력 규칙 문의

1

74

2

int main 함수 관련 오류 문의

1

67

2

13.4 words[0]

0

60

2

11.7 함수를 구현해 봤습니다.

1

62

2

11.6 직접 strcmp와 strncmp를 구현해 보았습니다.

1

64

2

11.6 my_strcat과 my_strncat을 구현해봤습니다.

1

53

2

11.6 fit_str함수를 구현해 봤습니다.

1

53

2

11.5 코드 구현

1

67

2