Предположим, вы хотите создать новую строку, и я предполагаю, что вам нужна функция, которая просто принимает указатель на такую строку: (где предполагается, что то, на что указывает stripped
, по крайней мере того же размера, что ина что указывает orig
)
void strip_0s_and_1s(char *orig, char *stripped)
{
// while we haven't seen a null terminator
while(*orig){
// if the current character is not a 1 or a 0...
if(*orig != '0' && *orig != '1'){
// copy the character
*stripped= *orig;
stripped++;
}
// increment pointer to old string
orig++;
}
// terminate 'stripped' string
*stripped= '\0';
}
Я считаю, что вызов этого с одинаковым указателем для обоих аргументов должен заменить на месте ...
Чтобы ответить на ваш вопрос о поискедлина входных строк во время выполнения вы можете сделать что-то вроде:
#include <stdio.h>
#include <string.h>
int main (int argc, char **argv) {
int len;
char str[100]; // max string length of 99+1 null terminator
scanf("%s", str);
len = strlen(str);
printf("%d", len);
return 0;
}
(правка: изменено, чтобы исключить использование new
в качестве имени переменной)
(правка: добавлена информация о вводестроки во время выполнения и поиск длины строки)