Всегда используйте fgets()
вместо gets
. Также есть много вещей, чтобы исправить. Вы не должны использовать стандартные библиотечные функции для создания пользовательского интерфейса. Стандартная библиотека действительно не предназначена для этого. Вместо этого вы должны использовать библиотека проклятий или что-то подобное. Вы также можете написать программу для принять аргументы в качестве входных данных.
Краткий пример правильного использования стандартной библиотеки. В этой версии нет проверки ошибок, поэтому предполагается, что введенные пользователем данные верны.
#include <stdio.h>
int main(int artc, char *argv[])
{
/* arguments are strings so assign only the first characte of the
* third argument string. Remember that the first argument ( argv[0] )
* is the name of the program.
*/
char mychar = argv[2][0];
char *string = argv[1];
int i, count = 0;
/* count the occurences of the given character */
for(; *string != '\0'; ++string)
if(*string == mychar) ++count;
printf("The char ‘%c’ appears %d times.\n", mychar, count);
return 0;
}
Использование: ./count "Hello, World!" l
Выход: The char ‘l’ appears 3 times.
РЕДАКТИРОВАТЬ: Что касается исходного кода. Измените ==
на !=
.
for (i=0 ; (string[i] == '\0') ; i++ )
до:
for (i=0 ; (string[i] != '\0') ; i++ )
Сравнение было неверным.