Новый синтаксис C, поэтому, возможно, я просто делаю тупая ошибка. Я пытаюсь реализовать функцию strcat() самостоятельно, используя тот же самый процесс. Моя функция подражания - strcat406().Сегментация Fault, но у меня нет бесконечных циклов ... Я думаю,
При попытке запустить программу я все время испытываю ошибку сегментации как ошибку.
EDIT: первый цикл while в strcat406() - это моя попытка обойти функцию strlen(). Я пытаюсь избежать использования встроенных операций.
EDIT2: Хорошо, так как люди указали, я заменил '\ n' на '\ 0'. Глупая ошибка. Затем я исправил все это, удалив строку 'string1 [i] = string [i]'. Таким образом, первый цикл просто выполняет итерацию для определения i (длина строки1), затем строка string2 добавляется в строку1 во втором цикле while. Исправления в коде ниже.
#include <stdio.h>
char *strcat406(char string1[ ], char string2[ ]) {
int i = 0, j = 0;
while (string1[i] != '\0') { //replaced '\n' with '\0'
//removed: string1[i] = string1[i];
i++;
}
while (string2[j] != '\0') { //replaced '\n' with '\0'
string1[i+j] = string2[j];
j++;
}
string1[i+j] = '\0';
return string1;
}
int main() {
char str1[81], str2[81];
char again = 'y', newline;
while (again == 'y') {
printf("Enter a string\n");
scanf("%s", str1);
printf("Enter another string\n");
scanf("%s", str2);
printf("The concatention is %s\n", strcat406(str1, str2));
printf("Second test: The concatenation is %s\n", str1);
printf("The second string is still %s\n", str2);
printf("Again? (y/n)\n");
scanf("%c%c", &newline, &again);
}
}
Что такое 'string1 [i] = string1 [i];' for? Это кажется излишним ... Также segfaults не обязательно являются результатом бесконечных циклов: обычно это связано с доступом/изменением памяти, которой вы не владеете. Проверьте, не закончились ли строки. – Kninnug
Как вы можете объединить 2 массива символов в пространстве 1? – cppcoder
@cppcoder: Вы имеете в виду concatenate 2 строки в буфере, который в настоящее время содержит один, но достаточно большой для обоих ;-)? – Deduplicator