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();