私はCを学習していて、ポインターを使用して配列内の各文字列を逆にしようとしています。以下のコードを実行すると、「swapChars」の引数1と2を渡すと、キャストなしで整数からポインターが作成されるという警告が表示されます。実行すると「バスエラー」が発生します。誰かが理由を知っていますか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void swapChars(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void reverse(int size, char* arr[]) {
for(int w = 0; w < size; w++) {
int length = strlen(arr[w]);
for(int i = 0; i < length/2; i++) {
swapChars(arr[w][i], arr[w][length-i]);
}
}
}
編集:ありがとう!エラーや警告は表示されなくなりましたが、「helloworld」で実行しても何も出力されない理由を知っていますか?これは私のmain()です:
int main(int argc, char* argv[]) {
int numWords = argc-1;
char** words = argv+1;
reverse(numWords,words);
for (char** word = words; word < words+numWords; word++) {
printf("%s ",*word);
}
printf("\n");
return 0;
}