Я получаю ошибку шины при попытке запустить этот код.Цель этого состоит в том, чтобы заменить определенные буквы цифрами, E на 3, O на 0 и т. Д.
#include <stdio.h>
#include <string.h>
#define MAX_BUF 1024
int main () {
char buf[MAX_BUF];
int length;
// other stuff
do {
// read a line
fgets(buf, MAX_BUF, stdin);
// calculate its length
int len = strlen(buf) - 1;
// modify the line by switching characters
char buf2[MAX_BUF];
strcpy(buf2, buf);
int i;
for(i = 0; i < length; i++){
if (buf2[i] == 'E' || buf2[i] == 'e'){
buf2[i] = '3';
}
if (buf2[i] == 'I' || buf2[i] == 'i'){
buf2[i] = '1';
}
if (buf2[i] == 'O' || buf2[i] == 'o'){
buf2[i] = '0';
}
if (buf2[i] == 'S' || buf2[i] == 's'){
buf2[i] = '5';
}
}
// print the modified line
printf("%s", buf2);
} while (length > 1);
}
Ожидаемый результат ввода
"Быстрая коричневая лиса перепрыгивает черезленивая собака. "is
"Th3 qu1ck br0wn f0x jump5 0v3r th3 lazy d0g."
Но опять же, программа выдает «Ошибка шины», которую я не понимаю и не знаю, как ее найти.