Загрузка данных


smaugmol@us-s2:~/D09T06_ID_1577487-1/src/s21_string$ git diff -- s21_string.c s21_string.h s21_string_test.c Makefile 
diff --git a/src/s21_string/Makefile b/src/s21_string/Makefile
index c5fd0fb..f3ef12e 100644
--- a/src/s21_string/Makefile
+++ b/src/s21_string/Makefile
@@ -8,6 +8,8 @@ strcmp_tests: $(BUILD_DIR)/Quest_7
 
 strcpy: $(BUILD_DIR)/Quest_8
 
+strcat: $(BUILD_DIR)/Quest_9
+
 $(BUILD_DIR)/Quest_6: s21_string.c s21_string_test.c s21_string.h
        mkdir -p $(BUILD_DIR)
        $(CC) $(CFLAGS) -DTEST_STRLEN_ONLY s21_string.c s21_string_test.c -o $(BUILD_DIR)/Quest_6
@@ -20,7 +22,11 @@ $(BUILD_DIR)/Quest_8: s21_string.c s21_string_test.c s21_string.h
        mkdir -p $(BUILD_DIR)
        $(CC) $(CFLAGS) s21_string.c s21_string_test.c -o $(BUILD_DIR)/Quest_8
 
+$(BUILD_DIR)/Quest_9: s21_string.c s21_string_test.c s21_string.h
+       mkdir -p $(BUILD_DIR)
+       $(CC) $(CFLAGS) -DTEST_STRCAT_ONLY s21_string.c s21_string_test.c -o $(BUILD_DIR)/Quest_9
+
 clean:
-       rm -f $(BUILD_DIR)/Quest_6 $(BUILD_DIR)/Quest_7 $(BUILD_DIR)/Quest_8
+       rm -f $(BUILD_DIR)/Quest_6 $(BUILD_DIR)/Quest_7 $(BUILD_DIR)/Quest_8 $(BUILD_DIR)/Quest_9
 
-.PHONY: strlen_tests strcmp_tests strcpy clean
+.PHONY: strlen_tests strcmp_tests strcpy strcat clean
diff --git a/src/s21_string/s21_string.c b/src/s21_string/s21_string.c
index 4f02dd1..112356b 100644
--- a/src/s21_string/s21_string.c
+++ b/src/s21_string/s21_string.c
@@ -27,3 +27,16 @@ char *s21_strcpy(char *dest, const char *src) {
 
     return start;
 }
+
+char *s21_strcat(char *dest, const char *src) {
+    char *start = dest;
+
+    while (*dest != '\0') {
+        dest++;
+    }
+
+    while ((*dest++ = *src++) != '\0') {
+    }
+
+    return start;
+}
diff --git a/src/s21_string/s21_string.h b/src/s21_string/s21_string.h
index 10db291..8388c6c 100644
--- a/src/s21_string/s21_string.h
+++ b/src/s21_string/s21_string.h
@@ -7,5 +7,6 @@
 size_t s21_strlen(const char *str);
 int s21_strcmp(const char *str1, const char *str2);
 char *s21_strcpy(char *dest, const char *src);
+char *s21_strcat(char *dest, const char *src);
 
 #endif
diff --git a/src/s21_string/s21_string_test.c b/src/s21_string/s21_string_test.c
index ba82b5a..811aeae 100644
--- a/src/s21_string/s21_string_test.c
+++ b/src/s21_string/s21_string_test.c
@@ -29,11 +29,30 @@ void s21_strcmp_test(void) {
     }
 }
 
+void s21_strcat_test(void) {
+    char dest1[50] = "Hello, ";
+    char dest2[50] = "";
+    char dest3[50] = "School";
+    const char *src1 = "world!";
+    const char *src2 = "abc";
+    const char *src3 = "";
+
+    s21_strcat(dest1, src1);
+    s21_strcat(dest2, src2);
+    s21_strcat(dest3, src3);
+
+    printf("Test 1: %s — %s\n", dest1, s21_strcmp(dest1, "Hello, world!") == 0 ? "SUCCESS" : "FAIL");
+    printf("Test 2: %s — %s\n", dest2, s21_strcmp(dest2, "abc") == 0 ? "SUCCESS" : "FAIL");
+    printf("Test 3: %s — %s\n", dest3, s21_strcmp(dest3, "School") == 0 ? "SUCCESS" : "FAIL");
+}
+
 int main(void) {
 #ifdef TEST_STRLEN_ONLY
     s21_strlen_test();
 #elif defined(TEST_STRCMP_ONLY)
     s21_strcmp_test();
+#elif defined(TEST_STRCAT_ONLY)
+    s21_strcat_test();
 #else
     s21_strlen_test();
     s21_strcmp_test();