Неверный подход к вводу
Ниже не будет сканироваться str1
ничего с пробелом.
// bad
char str1[50];
scanf("%s", &str1);
Вместо этого используйте fgets()
, чтобы прочитать строку и сформировать строку .
char str1[50];
if (fgets(str1, sizeof str, stdin)) {
// success!
Отрезать потенциальный трейлинг '\n'
при желании.
str1[strcspn(str1, "\n")] = '\0';
Считывает последний конец строки
Циклы считывают размер массива. Должен быть l oop до нулевого символа .
// for (int i = 0; i < 50; i++)
for (int i = 0; inString[i]; i++)
Отсутствует \ 0
Формирование строки в str2[]
является неполным так как в нем отсутствует нулевой символ '\0'
.
str2[j] = '\0'; // add after the loop
Предупреждения не полностью включены
Ниже следует предупредить о несоответствии "%s"
с str2[i]
.
for (int i = 0; i < 50; i++) {
printf("%s", str2[i]);
}
Вместо этого без al oop.
printf("%s", str2);
Это самый большой урок, который нужно здесь усвоить. Полностью включив предупреждения, компилятор обеспечивает быструю обратную связь о том, что что-то не так или сомнительно; быстрее, чем Stackoverflow.
Отсутствует возврат
char *removeSpaces(char *inString)
, как ожидается, вернет char *
, но в коде отсутствует return something;
.