소프트웨어 C언어 고수님들.. 도와주세요..
2014.04.24 01:12
안녕하세요.
C언어 배우고 있는데, 과제물이 너무 어렵네요..
포인터를 써야 할 것 같은데,
bad를 good 로 고치면 되는데, 문제는 글자 길이가 달라서 추가적으로 함수를 더 써야되는 건지요?
소스를 어떻게 짜면 될까요?
도와주시면 감사하겠습니다.
(문제가 된다면 게시물 삭제하겠습니다.)
------------------------------------------------------------
문자열에서 특정 문자열을 변환하기
– C언어는 문자열을 변환하기 위한 특별한 함수를 제공하지 않습니다.
– 따라서, 입력 받은 문자열 중에서 특정 문자열을 변환하는 함수를 작성합니다.
– 소스코드 작성 조건(함수 이름) 변환문자열 함수 원형은 다음과 같이 한다.
-> void ReplaceStr(char *string, char *oldstr, char *newstr);
다음 [실행결과 예]와 같은 프로그램을 작성하시오
입력 문자열 ? I am a bad student (엔터)
변환하고자 하는 문자열 ? bad (엔터)
변환될 문자열? good (엔터)
입력 문자열을 다음과 같이 변환하였습니다.
I am a good student
------------------------------------------------------------
댓글 [6]
-
초리 2014.04.24 05:21
-
푸른하늘좋아 2014.04.24 09:26
앗! 감사합니다.
나이 들어서 직장 야근 + 가정을 이끌며 공부하기가 힘드네요..
요즘 계속 이것 붙잡느라 새벽에야 잠들었습니다.
오늘 퇴근하자 마자 집에가서 올려주신 소스 분석하며,
제 것으로 만들겠습니다.
감사합니다!
C언어에서 포인터가 정말 중요하다는데, 이해하기가 어렵네요.
강사 말로는 포인터 공부하다 포기하는 사람이 많고,
프로그래머 중에서도 잘 몰라서 Copy&Paste 하는 사람도 종종 있다고 그러네요..
아무튼 열심히 공부하겠습니다.
-
초리 2014.04.24 11:07
앗! 혹시 재귀호출법을 안배웠다면
return ReplaceStr(srcstr, oldstr, newstr); <== 삭제해주세요
그래도 원하는 답은 나올거예요.
-
푸른하늘좋아 2014.04.24 11:13
그런가요?
그 줄 삭제해도 되나보지요?
감사합니다. ^^
-
qkqh 2014.04.24 11:44
char* ch 값 넣는 부분 빼먹으신 것 같네요. 나중에 작성하려고 빈 줄 하나 넣으신 것 같은데...
ch = srcstr + strlen(srcstr); 라고 하면 될 것 같은데 정확하진 않아요
-
푸른하늘좋아 2014.04.24 19:06
세세한 부분까지 챙겨주셔서
감사합니다.
넣어서 해 보겠습니다.^^
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
48337 | 윈 도 우| 윈도우8.1 cpu 점유율 ㅠㅠ [6] | 샤잠 | 3428 | 04-24 |
48336 | 윈 도 우| 윈도우8.1 설치 질문입니다 [3] | 샤잠 | 1447 | 04-24 |
48335 | 윈 도 우| 도시나노트북 복구모드 복사할수 있나요?? [2] | 된장 | 1564 | 04-24 |
48334 | 윈 도 우| Windows 8.1 설치시 포맷관련 [4] | 쟈스코 | 2294 | 04-24 |
48333 | 소프트웨어| 64비트에서 Unlocker 되시는지요? [7] | 카리스마조 | 1760 | 04-24 |
48332 | 소프트웨어| 오피스 관련 질문 [2] | 알랑가모를랑가 | 1160 | 04-24 |
48331 | 윈 도 우| 윈도우 8.1 cpu점유 문제 [5] | sniperst | 3898 | 04-24 |
48330 | 윈 도 우| win8에서 win8.1 업그레이드 [2] | 쌍둥이아빠 | 1543 | 04-24 |
48329 | 소프트웨어| 모두에게 질문 합니다. [2] | dlxh | 906 | 04-24 |
48328 | 소프트웨어| tib 화일 익스플로어 같은건 없을까요? [4] | 흑우 | 1157 | 04-24 |
48327 | 하드웨어| 궁금하여 여쭙니다. [4] | 바우 | 991 | 04-24 |
48326 | 기 타| 인터넷 튀는 증상 문의 [3] | RURUTEAM | 1020 | 04-24 |
48325 | 윈 도 우| WIN 8 PE 에러 조언 좀 구하겠습니다.. [6] | 알키온 | 1082 | 04-24 |
48324 | 윈 도 우| 누구나 아실만한건데 제가 초보라 궁금해서 질문합니다. [1] | 다시한번 | 989 | 04-24 |
48323 | 윈 도 우| 윈도우7 만고 설치 오류에 대해서.. [6] | 하하히 | 1157 | 04-24 |
48322 | 윈 도 우| ramos와 pem 의 차이가 무엇인가요? | 도라란 | 998 | 04-24 |
48321 | 윈 도 우| 저기요 인증 말입니다 [3] | 크롱 | 1581 | 04-24 |
48320 | 윈 도 우| DVD롬 안의 파일 정렬이 자세히 보기로만 되는 이유 | 비숍 | 1183 | 04-24 |
» | 소프트웨어| C언어 고수님들.. 도와주세요.. [6] | 푸른하늘좋 | 1381 | 04-24 |
48318 | 윈 도 우| 윈도우 81. 프로 엔터 [2] | 크롱 | 2060 | 04-23 |
쩝~ 다른 작업하든중에 들어와보니 문제가 있네요
문제를 보니 풀고 싶고 내가 풀어서는 안되는데 쩝~
열공하세요
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void ReplaceStr(char *srcstr, char *oldstr, char *newstr)
{
char buffer[1000];
char *ch;
strncpy(buffer, srcstr, ch-srcstr);
buffer[ch-srcstr] = 0;
sprintf(buffer+(ch - srcstr), "%s%s", newstr, ch + strlen(oldstr));
srcstr[0] = 0;
strcpy(srcstr, buffer);
return ReplaceStr(srcstr, oldstr, newstr);
}
int main(void)
{
char src[100];
char old[100];
char newstr[100];
printf("입력문자열 ? ");
gets(src);
printf("\n");
printf("변환하고자 하는 문자열 ? ");
gets(old);
printf("\n");
printf("변한될 문자열 ? ");
gets(newstr);
printf("\n");
ReplaceStr(src, old, newstr);
printf("\n\n입력 문자열을 다음과 같이 변환하였습니다\n%s\n------------------------------------------------------------\n", src);
return 0;
}