ポインタがあり、両方の文字のインデックスがわかっている場合、文字をどのように交換しますか(実際には配列を割り当てませんでした)
すなわち
char *str = "hello"
そして、私は知っていて、インデックス0と4である「h」と「o」を交換してから、ポインタも返したいと思っていました。
私はの慣習を行うことに慣れています
temp = array[i];
array[i] = array[j];
array[j] = temp;
ポインタがあり、両方の文字のインデックスがわかっている場合、文字をどのように交換しますか(実際には配列を割り当てませんでした)
すなわち
char *str = "hello"
そして、私は知っていて、インデックス0と4である「h」と「o」を交換してから、ポインタも返したいと思っていました。
私はの慣習を行うことに慣れています
temp = array[i];
array[i] = array[j];
array[j] = temp;
ええと、文字列リテラルへのポインタを使うことはできません。リテラルは不変です。あなたがいつもそれをした方法に固執してください。
次の宣言:
char *str = "hello";
安全でない行動について警告するために、そうする必要があります。
const char *str = "hello";
文字列リテラルを変更しようとするのはC標準によると未定義の動作であるため、配列を使用する必要があります。
char str[] = "hello";
次に、配列の要素を交換するのは簡単で安全です。
char tmp = str[0];
str[0] = str[4];
str[4] = tmp;
temp = array[i];
array[i] = array[j];
array[j] = temp;
一部のオペレーティングシステム/コンパイラでは、主にAIX5.1などの文字列リテラルを変更できます。
コード内の文字列リテラルを変更する場合、Linux用にコンパイルするためにコードを書き直す必要があるため、コードをクロスプラットフォームにするのは面倒です。