[C언어] 문자열을 찾고 바꾸기에 관한 질문입니다.
조회수 432회
문자열 입력 : We have a book
찾을 문자 : book
바꿀 문자 : paper
We have a paper
이런 결과를 출력하는 c코드를 작성하고 싶은데
#include <stdio.h>
#include <string.h>
void ChangeStr(char *s, char *f, char *c)
{
int i;
for (i=0; s[i] != NULL; i++ )
{
if (s == f)//s와 f의 첫번째 index가 같다면
{
for (int j = 0; j < strlen(c); j++)
s[i] = c[j];
}
}
printf("%s", s);
}
int main()
{
char str[30];
char find[30];
char change[30];
printf("문자열 입력 : ");
gets(str);
printf("찾을 문자 : ");
gets(find);
printf("바꿀 문자 : ");
gets(change);
ChangeStr(str, find, change);
}
이것은 제가 짠 코드입니다. 출력 했을 때 book이 paper로 바뀌지 않아서요.. 뭐가 문제일까요ㅠㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
아래 코드 참고하세요.
#include <stdio.h> #include <string.h> void ChangeStr(char* s, char* f, char* c) { int i; for (i = 0; s[i] != NULL; i++) { if (strncmp(&s[i], f, strlen(f)) == 0) // s[i]부터 strlen(f) 글자가 f와 같다면 { for (size_t j = 0; j < strlen(c); j++) s[i + j] = c[j]; s[i + strlen(f) + 1] = '\0'; } } printf("%s", s); } int main() { char str[30]; char find[30]; char change[30]; printf("문자열 입력 : "); gets_s(str, 30); printf("찾을 문자 : "); gets_s(find, 30); printf("바꿀 문자 : "); gets_s(change, 30); ChangeStr(str, find, change); }
결과
위 코드는 질문자 분께서 작성하신 코드를 기초로 작성해 본건데요. 좀더 활용성을 높이실려면 아래처럼 하는게 더 좋을거 같아요.
#include <stdio.h> #include <string.h> int main() { char str[80], find[80], change[80], temp[80]; char* p; printf("문자열 입력: "); gets_s(str, 80); printf("찾을 문자: "); gets_s(find, 80); printf("바꿀 문자: "); gets_s(change, 80); p = strstr(str, find); if (p != NULL) { str[p - str] = '\0'; strcpy_s(temp, 80, p + strlen(find)); strcat_s(str, 80, change); strcat_s(str, 80, temp); printf("%s", str); } return 0; }
결과
-
(•́ ✖ •̀)
알 수 없는 사용자
-
-
댓글 입력