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ここでポインタ指定するのは何故なのでしょうか?
No.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')
と同じです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Word(ワード) Word 大学のレポートをWordで書いて提出したんですけど、提出したものを見るとWordファイルの 4 2022/04/17 18:00
- PDF acrobatでwordファイルをpdfに変換すると文字化けする 3 2023/02/10 09:31
- CPU・メモリ・マザーボード CPUがメモリ上の命令を実行した後の流れについての質問です。 1 2023/05/05 01:36
- Word(ワード) Office 365のWordでオブジェクト挿入であるWord文書にほかのWord文書やPDFを貼り 2 2022/05/09 15:57
- Word(ワード) PCで作ったwordをスマホで編集しようとすると「このファイルは読み取り専用です。」と表示される。 3 2023/05/30 14:51
- Visual Basic(VBA) evcel VBAについて 2 2022/08/02 21:37
- Word(ワード) 表の縦罫線を移動するピッチ 1 2022/10/12 12:24
- Excel(エクセル) Excelから複数のWordファイルを操作する方法について教えて頂きたい。 やりたいことは、複数のW 2 2022/07/26 20:11
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セグメントエラー
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
アプリを32bitから64bit移行
-
DLL<->VB間での受け渡し(文字...
-
C言語のポインタに直接アドレス...
-
LPSTR型の初期化について
-
参照型で受け取った引数をポイ...
-
戻り値で構造体を返すことは可...
-
構造体とfscanf
-
fopne で失敗する原因
-
NASMかNASKの文法の本
-
関数ポインタの高速化のメリット
-
自作関数の引数
-
Cで作成したDLL関数をVBから呼...
-
popenした子プロセスのプロセス...
-
#define NULL ((void *)0) の弊害
-
C言語のプログラムをJavaに...
-
visual studioのエラーについて
-
x64プログラムでアドレスが32bi...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
C言語の関数と配列に関する質問
-
Run-Time Check Failure #3とい...
-
LPSTR型の初期化について
-
ExcelVBAでのkernel32(64bit)
-
main(int argc,char **argv[])...
-
アプリを32bitから64bit移行
-
ハンドルはポインタか
-
連結リスト 要素の入れ替え
-
C言語でのconstを返す関数
-
Cで作成したDLL関数をVBから呼...
-
NULLとブランクの違い
-
エラーの意味
-
ハンドル、アドレス、ポインタ...
-
DLL<->VB間での受け渡し(文字...
-
【C言語】戻り値が構造体の関数
おすすめ情報