(char*)'r'
- это попытка преобразовать int
константу 'r'
в указатель char*
. Фактическое значение, связанное с 'r'
, зависит от кодировки , используемой вашей системой.
Когда библиотечная функция пытается разыменовать этот указатель, поведение программы будет undefined .
"r"
, с другой стороны, имеет тип char[2]
, который будет затухать до указателя char*
, требуемого функцией.
В IDE сложно выдать предупреждение за неправильный случай; и помните, что одним из принципов C является то, что вы предполагаете, что знаете, что делаете!