Это должно быть просто, но указатели на массивы символов иногда заставляют меня чесать голову. gcc жалуется, что «значение подписки не является ни массивом, ни указателем» в строках 4 и 5, а «аргумент недопустимого типа 'unary *'» в строках 8 и 11. Может ли кто-нибудь объяснить, что здесь происходит не так? Я изменил строки 4 и 5, чтобы разыменовать указатель сначала, используя скобки, но все еще не могу получить то, что я хочу.
Это должна быть довольно простая функция:
1 void makesafestr ( const char *unsafe, const char *safe )
2 {
3 int offset=0;
4 for (; (*safe)[offset] != "\0" ; offset++) {
5 switch ((*unsafe)[offset]) {
6 case "\n":
7 case "\r":
8 *safe[offset] = "~";
9 break;
10 default:
11 *safe[offset] = *unsafe[offset];
12 }
13 offset++;
14 }
}