プロが教える店舗&オフィスのセキュリティ対策術

C言語 文字列で分からない部分があるのでご教示お願いします。
内容は「文字列の検索」です。

#include<stdio.h>
#include<string.h>

int main(void)
{

char word[] = "abcabdabe";

char word2[] = "abd";

char *word3 = "ABD";

char *word4 = NULL;

printf("処理前の文字列:%s\n", word);

word4 = word;

word4 = strchr(word4, *word2);
while (word4 != NULL){
printf("'a'が見つかった場所からの文字列: %s<\n", word4);
if (strncmp(word4, word2, strlen(word2)) == 0) {
strncpy(word4, word3, strlen(word3));
}
word4 += 1;
word4 = strchr(word4, *word2);
}

printf("処理後のword4: %s\n", word);

return 0;
}

このプログラムの場合、word3とword4ではなぜ、*word3, *word4とポインタで設定するのでしょうか?

また、「word4 = strchr(word4, *word2)」と *word2のようにlここでポインタ指定するのは何故なのでしょうか?

A 回答 (1件)

[Q1]word3とword4ではなぜ、*word3, *word4とポインタで設定するのでしょうか?


[A1]別にchar word3 [] = "ABD";としても問題はないと思います。気まぐれとしか思えません。

[Q2]「word4 = strchr(word4, *word2)」とポインタ指定するのは何故か?
[A2] ポインタ指定なんかしていない。ポインタが指している実体を引数にしている。
char a = 'A' ;
char *pa ;
pa = &a ;
char c ;
のような場合、'A'をアクセスする場合には
c = *pa ;
と書くでしょ ?
それと同じです。
つまり、
word4 = strchr(word4, *word2)

word4 = strchr(word4, 'a')
と同じです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!