1. νΉμ λ¬Έμμ΄ μ°ΎκΈ°/κ²μμ μλ―Έμ νμμ±
νΉμ λ¬Έμμ΄μ μ°ΎκΈ° λλ κ²μνλ κ²μ λ§μ μν©μμ νμν μμ μ λλ€. λ¬Έμμ΄μ νλ‘κ·Έλλ°μ΄λ λ°μ΄ν° μ²λ¦¬μμ μ€μν μν μ νλ©°, νΉμ λ¬Έμμ΄μ μ°Ύλ κ²μ ν΄λΉ λ¬Έμμ΄μ ν¬ν¨νκ³ μλ μμΉλ μ‘΄μ¬ μ¬λΆλ₯Ό νμΈνκΈ° μν κΈ°λ₯μ λλ€. νΉμ λ¬Έμμ΄ μ°ΎκΈ°/κ²μμ μλ―Έμ νμμ±μ λν΄ μ΄ν΄λ³΄λ©΄ λ€μκ³Ό κ°μ΅λλ€.
1.1 νΉμ λ¬Έμμ΄μ μμΉ νμ
νΉμ λ¬Έμμ΄μ μ°Ύλ κ²μ μ£Όμ΄μ§ λ¬Έμμ΄ λ΄μμ ν΄λΉ λ¬Έμμ΄μ΄ μμνλ μμΉλ₯Ό νμ νλ μν μ ν©λλ€. μ΄λ νλ‘κ·Έλλ°μμ νΉμ ν¨ν΄μ΄λ ν€μλκ° μ΄λμ μμΉν΄ μλμ§ νμΈνλ λ°μ λ§€μ° μ μ©ν©λλ€. μλ₯Ό λ€μ΄, μ£Όμ΄μ§ λ¬Έμμ΄ μ€μμ νΉμ ν λ¨μ΄λ₯Ό μ°Ύκ±°λ νΉμ ν λ¬Έμμ΄ ν¨ν΄μ΄ μ‘΄μ¬νλμ§ νμΈν μ μμ΅λλ€.
1.2 λ¬Έμμ΄ ν¬ν¨ μ¬λΆ νμΈ
νΉμ λ¬Έμμ΄μ μ°Ύλ κ²μ ν΄λΉ λ¬Έμμ΄μ΄ μ£Όμ΄μ§ λ¬Έμμ΄ λ΄μ ν¬ν¨λμ΄ μλμ§ μ¬λΆλ₯Ό κ²μ¬νλ μν μ ν©λλ€. μ΄λ μ¬μ©μκ° μ λ ₯ν λ¬Έμμ΄μμ νΉμ ν λ¬Έμ λλ λ¨μ΄λ₯Ό ν¬ν¨νκ³ μλμ§ μ¬λΆλ₯Ό νμΈνλλ° νμ©λ©λλ€. μλ₯Ό λ€μ΄, λ°μ΄ν°λ² μ΄μ€μμ νΉμ λͺ¨λΈλͺ μ κ²μνλ κ²½μ°, ν΄λΉ λͺ¨λΈλͺ μ΄ μ£Όμ΄μ§ λ¬Έμμ΄ λ΄μ ν¬ν¨λ κ²½μ°μλ§ κ²μ κ²°κ³Όκ° λ°νλ μ μμ΅λλ€.
1.3 ν¨μ¨μ μΈ λ°μ΄ν° μ²λ¦¬
νΉμ λ¬Έμμ΄μ μ°Ύλ κ²μ νλ‘κ·Έλ¨μ΄λ λ°μ΄ν° μ²λ¦¬ κ³Όμ μμ ν¨μ¨μ μΈ μμ μ μν΄ νμν©λλ€. λ¬Έμμ΄ κ²μμ λμ©λ λ°μ΄ν°μμ μνλ μ 보λ₯Ό λΉ λ₯΄κ² μ°Ύλ λ° μ¬μ©λλ©°, μκ³ λ¦¬μ¦κ³Ό κ΄λ ¨λ μ΅μ ν κΈ°λ²μ΄ μ μ©λ μ μμ΅λλ€. νΉμ λ¬Έμμ΄ μ°ΎκΈ°/κ²μμ νμμ±μ λ°μ΄ν° μ²λ¦¬ μ±λ₯ ν₯μκ³Ό κ΄λ ¨λ μꡬμ¬νμ μΆ©μ‘±μν€λ λ°μ ν° λμμ μ€λλ€.
νΉμ λ¬Έμμ΄ μ°ΎκΈ°/κ²μμ μλ―Έμ νμμ±μ μ΄ν΄λ³΄μμ΅λλ€. μ΄ν, 본격μ μΌλ‘ strstr ν¨μμ κ°λ κ³Ό μ¬μ©λ²μ λν΄ μμλ³΄κ² μ΅λλ€.
2. strstr ν¨μμ κ°λ κ³Ό μ¬μ©λ²
strstr ν¨μλ C μΈμ΄μμ μ 곡λλ λ¬Έμμ΄ ν¨μλ‘, μ£Όμ΄μ§ λ¬Έμμ΄μμ νΉμ λ¬Έμμ΄μ μ°Ύκ³ ν΄λΉ λ¬Έμμ΄μ΄ μμνλ μμΉλ₯Ό λ°ννλ κΈ°λ₯μ μ 곡ν©λλ€. strstr ν¨μμ κ°λ κ³Ό μ¬μ©λ²μ λν΄ μμλ³΄κ² μ΅λλ€.
2.1 κ°λ
strstr ν¨μλ λ€μκ³Ό κ°μ νμμΌλ‘ μ μΈλ©λλ€.
#include <string.h>
char* strstr(const char* haystack, const char* needle);
haystack
: μ£Όμ΄μ§ λ¬Έμμ΄μμ νΉμ λ¬Έμμ΄μ μ°Ύμ λμ λ¬Έμμ΄μ λλ€.needle
: μ°ΎμΌλ €λ νΉμ λ¬Έμμ΄μ λλ€.
strstr ν¨μλ haystack
λ¬Έμμ΄ μ€μμ needle
λ¬Έμμ΄μ΄ 첫 λ²μ§Έλ‘ λνλλ μμΉλ₯Ό μ°Ύμ ν΄λΉ μμΉμ ν¬μΈν°λ₯Ό λ°νν©λλ€. λ§μ½ needle
λ¬Έμμ΄μ μ°Ύμ μ μλ κ²½μ°μλ NULLμ λ°νν©λλ€.
2.2 μ¬μ©λ²
strstr ν¨μμ μ¬μ©λ²μ μμ λ₯Ό ν΅ν΄ μ΄ν΄λ³΄κ² μ΅λλ€.
#include <stdio.h>
#include <string.h>
int main() {
char haystack[] = "Hello, world!";
char needle[] = "world";
char* result = strstr(haystack, needle);
if (result != NULL) {
printf("μ°Ύμ μμΉ: %ld\n", result - haystack);
} else {
printf("μ°Ύμ μ μμ\n");
}
return 0;
}
μ μμ μμ haystack
λ¬Έμμ΄μμ needle
λ¬Έμμ΄μ μ°Ύκ³ κ·Έ μμΉλ₯Ό μΆλ ₯νλ μμ μ
λλ€. strstr(haystack, needle)
λ₯Ό νΈμΆνμ¬ λ¬Έμμ΄μ μ°Ύμ ν, λ°νλ ν¬μΈν°λ₯Ό μ΄μ©νμ¬ μμΉλ₯Ό κ³μ°νκ³ μΆλ ₯ν©λλ€.
μ€ν κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
μ°Ύμ μμΉ: 7
μ μμ μμλ "world"λΌλ λ¬Έμμ΄μ΄ "Hello, world!"λΌλ λ¬Έμμ΄μμ 7λ²μ§Έ μΈλ±μ€λΆν° μμνλ€λ κ²μ μ μ μμ΅λλ€.
strstr ν¨μλ λμλ¬Έμλ₯Ό ꡬλΆνμ¬ λ¬Έμμ΄μ μ°ΎκΈ° λλ¬Έμ, λμλ¬Έμλ₯Ό ꡬλΆνμ§ μκ³ μ°Ύκ³ μ νλ κ²½μ°μλ μΆκ°μ μΈ μ²λ¦¬κ° νμν©λλ€.
strstr ν¨μμ κ°λ κ³Ό μ¬μ©λ²μ μμ보μμ΅λλ€. μ΄ν, strstr ν¨μλ₯Ό νμ©ν λ¬Έμμ΄ μ°ΎκΈ°/κ²μ μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
3. strstr ν¨μλ₯Ό νμ©ν λ¬Έμμ΄ μ°ΎκΈ°/κ²μ μμ
strstr ν¨μλ₯Ό νμ©νμ¬ λ¬Έμμ΄ μ°ΎκΈ° λλ κ²μμ μννλ μμ μ λν΄ μμλ³΄κ² μ΅λλ€. μλ μμ λ μ¬μ©μλ‘λΆν° μ λ ₯λ°μ λ¬Έμμ΄μμ νΉμ λ¨μ΄λ₯Ό μ°Ύλ νλ‘κ·Έλ¨μ λλ€.
#include <stdio.h>
#include <string.h>
int main() {
char text[100];
char word[20];
printf("λ¬Έμμ΄μ μ
λ ₯νμΈμ: ");
fgets(text, sizeof(text), stdin);
printf("μ°Ύμ λ¨μ΄λ₯Ό μ
λ ₯νμΈμ: ");
scanf("%s", word);
// κ°ν λ¬Έμ μ κ±°
text[strlen(text) - 1] = '\0';
char* result = strstr(text, word);
if (result != NULL) {
printf("λ¨μ΄λ₯Ό μ°Ύμ!\n");
} else {
printf("λ¨μ΄λ₯Ό μ°Ύμ μ μμ\n");
}
return 0;
}
μ μμ λ μ¬μ©μλ‘λΆν° λ¬Έμμ΄κ³Ό μ°Ύμ λ¨μ΄λ₯Ό μ
λ ₯λ°μ ν, strstr ν¨μλ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄μ λ¨μ΄κ° ν¬ν¨λμ΄ μλμ§ νμΈν©λλ€. μ¬μ©μκ° μ
λ ₯νλ λ¬Έμμ΄μ΄ text
μ μ μ₯λκ³ , μ°Ύμ λ¨μ΄λ₯Ό word
μ μ μ₯ν©λλ€.
fgets
ν¨μλ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄μ μ
λ ₯λ°μ λ, κ°ν λ¬Έμ(\n
)λ₯Ό ν¬ν¨νμ¬ μ½μ΄μ€κΈ° λλ¬Έμ, κ°ν λ¬Έμλ₯Ό μ κ±°νκ³ μΆμ κ²½μ°μλ text[strlen(text) - 1]
μ \0
λ₯Ό ν λΉν΄ κ°ν λ¬Έμλ₯Ό μμ ν©λλ€.
κ·Έλ¦¬κ³ , strstr ν¨μλ₯Ό μ¬μ©νμ¬ text
λ¬Έμμ΄μμ word
λ¨μ΄λ₯Ό μ°Ύμ΅λλ€. κ²°κ³Ό κ°μΌλ‘ λ°νλ ν¬μΈν° result
κ° NULLμ΄ μλ κ²½μ°, λ¨μ΄λ₯Ό μ°Ύμλ€λ λ©μμ§λ₯Ό μΆλ ₯ν©λλ€.
μ€ν κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
λ¬Έμμ΄μ μ
λ ₯νμΈμ: This is a sample text
μ°Ύμ λ¨μ΄λ₯Ό μ
λ ₯νμΈμ: sample
λ¨μ΄λ₯Ό μ°Ύμ!
μ μμ μμλ "This is a sample text"λΌλ λ¬Έμμ΄μμ "sample"μ΄λΌλ λ¨μ΄λ₯Ό μ°ΎμμΌλ―λ‘ "λ¨μ΄λ₯Ό μ°Ύμ!"μ΄λΌλ λ©μμ§κ° μΆλ ₯λμμ΅λλ€.
μ΄μ κ°μ΄ strstr ν¨μλ₯Ό νμ©νμ¬ λ¬Έμμ΄ μ°ΎκΈ°/κ²μμ μνν μ μμ΅λλ€. strstr ν¨μλ λ¬Έμμ΄μ μμΉλ₯Ό μ°Ύλ κΈ°λ₯μ μ 곡νκΈ° λλ¬Έμ, λ 볡μ‘ν λ¬Έμμ΄ μ²λ¦¬ μμ μλ νμ©λ μ μμ΅λλ€.
4. λ¬Έμμ΄ μΉνμ μλ―Έμ νμμ±
λ¬Έμμ΄ μΉνμ μ£Όμ΄μ§ λ¬Έμμ΄μμ νΉμ λ¬Έμ λλ λ¬Έμμ΄μ λ€λ₯Έ λ¬Έμ λλ λ¬Έμμ΄λ‘ λ체νλ μμ μ μλ―Έν©λλ€. μ΄ κΈ°λ₯μ μ 체μ μΈ λ¬Έμμ΄ μ²λ¦¬λ₯Ό μννλ λ° μμ΄ νμν μμ μΌλ‘, λ€μν μν©μμ νμ©λ μ μμ΅λλ€.
4.1 λ¬Έμμ΄ μΉνμ μλ―Έ
λ¬Έμμ΄ μΉνμ μ£Όμ΄μ§ λ¬Έμμ΄μμ νΉμ λ¬Έμ λλ λ¬Έμμ΄μ μ°Ύμμ λ€λ₯Έ λ¬Έμ λλ λ¬Έμμ΄λ‘ λ체νλ μμ μ μλ―Έν©λλ€. μ΄ κ³Όμ μ μ¬λ¬ κ°μ§ μ©λλ‘ νμ©λ μ μμ΅λλ€. λͺ κ°μ§ μμλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
- μ¬μ©μλ‘λΆν° μ λ ₯λ°μ λ¬Έμμ΄μμ νΉμ λ¨μ΄λ₯Ό λ€λ₯Έ λ¨μ΄λ‘ λ³κ²½νλ κ²½μ°
- νμΌμμ νΉμ λ¬Έμμ΄μ μ°Ύμμ λ€λ₯Έ λ¬Έμμ΄λ‘ λ체νλ κ²½μ°
- λ¬Έμμ΄ μ²λ¦¬ μμ μ νΉμ λ¬Έμμ΄μ νμμ λ€λ₯Έ νμμΌλ‘ λ³ννλ κ²½μ°
λ¬Έμμ΄ μΉνμ λ¬Έμμ΄ μ²λ¦¬μ μΌλΆλ‘ λ€μν μμ μ νμ©λλ©°, νΉμ λ¬Έμμ΄μ λ³κ²½ν λ μ μ©ν©λλ€.
4.2 λ¬Έμμ΄ μΉνμ νμμ±
λ¬Έμμ΄ μΉνμ λ€μν μν©μμ νμν μμ μΌλ‘, λ€μκ³Ό κ°μ λͺ κ°μ§ μ΄μ λ‘ μΈν΄ νμμ±μ΄ μμ΅λλ€.
λ°μ΄ν° μ μ : μ¬μ©μλ‘λΆν° μ λ ₯ λ°μ λ¬Έμμ΄μ μ²λ¦¬ν λ, μ λ ₯ κ°μ ν¬ν¨λ νΉμ λ¨μ΄ λλ λ¬Έμλ₯Ό λ³κ²½ν΄μΌ ν κ²½μ°κ° μμ΅λλ€. μλ₯Ό λ€μ΄, μ¬μ©μμκ² λ°μ μ΄λ¦μμ "μ±"μ μ κ±°νκ±°λ, νΉμ λ¨μ΄λ₯Ό λ€λ₯Έ λ¨μ΄λ‘ λ체ν΄μΌ ν μ μμ΅λλ€.
λ°μ΄ν° κ°κ³΅: νμΌμ΄λ λ°μ΄ν°λ² μ΄μ€μ κ°μ μΈλΆ μμ€μμ λ°μ΄ν°λ₯Ό κ°μ Έμ¬ λ, μλ³Έ λ°μ΄ν°μ ν¬ν¨λ νΉμ λ¬Έμμ΄μ λ체ν΄μ μ¬μ©ν΄μΌ ν κ²½μ°κ° μμ΅λλ€. μλ₯Ό λ€μ΄, μΉ ν¬λ‘€λ§μ ν΅ν΄ κ°μ Έμ¨ HTML λ¬Έμμμ νΉμ νκ·Έλ₯Ό μμ νκ±°λ λ€λ₯Έ νκ·Έλ‘ λ체ν΄μΌ ν μ μμ΅λλ€.
λ¬Έμμ΄ νμ λ³ν: λ¬Έμμ΄ μ²λ¦¬ μμ μμ νΉμ λ¬Έμμ΄μ νμμ λ€λ₯Έ νμμΌλ‘ λ³νν΄μΌ ν κ²½μ°κ° μμ΅λλ€. μλ₯Ό λ€μ΄, λ μ§ νμμ λ³ννκ±°λ, μ«μλ₯Ό λ€λ₯Έ νμμΌλ‘ ννν΄μΌ ν μ μμ΅λλ€.
μ΄μ²λΌ λ¬Έμμ΄ μΉνμ λ°μ΄ν° μ²λ¦¬μ λ³νμ νμν μμ μΌλ‘, 볡μ‘ν μμ μμ νμν κ²½μ°κ° μμ΅λλ€. C μΈμ΄μμλ λ¬Έμμ΄ μ²λ¦¬λ₯Ό μν λ€μν ν¨μλ₯Ό μ 곡νκ³ μμ΄, λ¬Έμμ΄ μΉν μμ μ κ°λ¨νκ² μνν μ μμ΅λλ€.
5. strstr ν¨μλ₯Ό νμ©ν λ¬Έμμ΄ μΉν μμ
strstr ν¨μλ₯Ό νμ©νμ¬ λ¬Έμμ΄ μΉνμ μννλ μμ μ λν΄ μμλ³΄κ² μ΅λλ€. μλ μμ λ μ¬μ©μλ‘λΆν° μ λ ₯λ°μ λ¬Έμμ΄μμ νΉμ λ¨μ΄λ₯Ό μ°Ύμμ λ€λ₯Έ λ¨μ΄λ‘ λ³κ²½νλ νλ‘κ·Έλ¨μ λλ€.
#include <stdio.h>
#include <string.h>
int main() {
char text[100];
char word[20];
char replace[20];
printf("λ¬Έμμ΄μ μ
λ ₯νμΈμ: ");
fgets(text, sizeof(text), stdin);
printf("μ°Ύμ λ¨μ΄λ₯Ό μ
λ ₯νμΈμ: ");
scanf("%s", word);
printf("λ체ν λ¨μ΄λ₯Ό μ
λ ₯νμΈμ: ");
scanf("%s", replace);
// κ°ν λ¬Έμ μ κ±°
text[strlen(text) - 1] = '\0';
// λ¨μ΄ μ°ΎκΈ°
char* result = strstr(text, word);
if (result != NULL) {
// λ¨μ΄ μΉν
strcpy(result, replace);
printf("μΉν κ²°κ³Ό: %s\n", text);
} else {
printf("λ¨μ΄λ₯Ό μ°Ύμ μ μμ\n");
}
return 0;
}
μ μμ λ μ¬μ©μλ‘λΆν° λ¬Έμμ΄, μ°Ύμ λ¨μ΄, λ체ν λ¨μ΄λ₯Ό μ
λ ₯λ°μ ν, strstr ν¨μλ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄μμ λ¨μ΄λ₯Ό μ°Ύμ΅λλ€. μ¬μ©μκ° μ
λ ₯ν λ¬Έμμ΄μ΄ text
μ μ μ₯λκ³ , μ°Ύμ λ¨μ΄λ₯Ό word
μ, λ체ν λ¨μ΄λ₯Ό replace
μ μ μ₯ν©λλ€.
fgets
ν¨μλ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄μ μ
λ ₯λ°μ λ, κ°ν λ¬Έμ(\n
)λ₯Ό ν¬ν¨νμ¬ μ½μ΄μ€κΈ° λλ¬Έμ, κ°ν λ¬Έμλ₯Ό μ κ±°νκ³ μΆμ κ²½μ°μλ text[strlen(text) - 1]
μ \0
λ₯Ό ν λΉν΄ κ°ν λ¬Έμλ₯Ό μμ ν©λλ€.
κ·Έλ¦¬κ³ strstr ν¨μλ₯Ό μ¬μ©νμ¬ text
λ¬Έμμ΄μμ word
λ¨μ΄λ₯Ό μ°Ύμ΅λλ€. κ²°κ³Ό κ°μΌλ‘ λ°νλ ν¬μΈν° result
κ° NULLμ΄ μλ κ²½μ°, λ¨μ΄λ₯Ό μ°Ύμλ€λ μλ―Έλ‘ λ¨μ΄λ₯Ό λ€λ₯Έ λ¨μ΄λ‘ λ체ν©λλ€. μ΄λ₯Ό μν΄ strcpy ν¨μλ₯Ό μ¬μ©νμ¬ result
μμΉλΆν° λ체ν λ¨μ΄λ‘ λ¬Έμμ΄μ 볡μ¬ν©λλ€.
λ§μ§λ§μΌλ‘ κ²°κ³Ό λ¬Έμμ΄μ μΆλ ₯ν©λλ€.
μ€ν κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€.
λ¬Έμμ΄μ μ
λ ₯νμΈμ: This is a sample text
μ°Ύμ λ¨μ΄λ₯Ό μ
λ ₯νμΈμ: sample
λ체ν λ¨μ΄λ₯Ό μ
λ ₯νμΈμ: example
μΉν κ²°κ³Ό: This is a example text
μ μμ μμλ "This is a sample text"λΌλ λ¬Έμμ΄μμ "sample"μ΄λΌλ λ¨μ΄λ₯Ό μ°Ύμμ "example"λ‘ μΉννμμΌλ―λ‘, "μΉν κ²°κ³Ό: This is a example text"λ₯Ό μΆλ ₯ν©λλ€.
μ΄μ κ°μ΄ strstr ν¨μλ₯Ό νμ©νμ¬ λ¬Έμμ΄ μΉνμ μνν μ μμ΅λλ€. λ¬Έμμ΄ μΉνμ C μΈμ΄μμ μμ£Ό μ¬μ©λλ κΈ°λ₯μΌλ‘, λ€μν μν©μμ μ μ©νκ² νμ©λ μ μμ΅λλ€.
λκΈ