第一,关于字符数组和字符指针,你的说法是对的。但是C语言在穿参数的时候,数组会自动转化为指针。
第二,返回值问题。一个变量在同一作用域内类型是不变的。你的str是char*类型的,返回类型自然必须是char*
第三,关于去掉return也可以的问题。因为你不写,那么默认返回一个0,是允许的,不过编译器会告警。如果不想返回,返回类型可以写void。
第四,还是关于参数和返回值。你这个函数的参数和返回值类型可以参照标准函数strcpy。也就是传入的str不要做++操作,定义一个临时变量来操作。返回的时候仍然返回str.成功返回str,失败返回NULL
第五,关于NULL和EOF的问题。他们俩意义不同。NULL用于普通指针比较,EOF用于文件指针到结尾的判断,具体用哪一个取决于用于比较的变量的类型。