Первый - НИКОГДА НЕ НИКОГДА используйте gets
, даже в коде игрушки.Он устарел в стандарте 1999 года и был удален из стандартной библиотеки по стандарту 2011 года.Это будет вводить точку отказа / серьезную дыру в безопасности вашего кода.Вместо этого используйте fgets
, просто имейте в виду, что новая строка будет сохранена в вашем буфере, если есть место.
Перестройте ваш оператор for
следующим образом:
for ( pt = str; *pt != '\0'; pt++ )
Первое выражение устанавливает pt
, чтобы указывать на первый символ в str
(в этом контексте str
- этоэквивалентно &str[0]
).Вторая сравнивает значение элемента, на который указывает pt
, с ограничителем строки.Поскольку вы пытаетесь проверить значение указанного объекта, вы должны использовать оператор *
для определения значения pt
.Окончательное выражение увеличивает pt
, чтобы указывать на следующий символ в строке.
Наконец, есть ли причина, по которой вы печатаете строку символ за символом, а не просто пишете printf( "%s\n", str );
?