C言語のポインタに詳しい人来てくれ

1: 2019/06/08(土) 22:41:42.85 ID:LL4vFXoZd
これをポインタ使って書き直すとどうなる?

void func(char *p, char *p2, char org)
{
int i;
for(i=0;i<= 20;i++)
if (p[i] == org)
{
p[i] = 'X';
}
else
p2[i] = p[i];
}

2: 2019/06/08(土) 22:41:53.39 ID:LL4vFXoZd
頼むで

7: 2019/06/08(土) 22:42:47.76 ID:eHxzeKRBr
もうポインタ使われとるやん

10: 2019/06/08(土) 22:43:01.94 ID:LL4vFXoZd
>>7
これじゃダメらしい

15: 2019/06/08(土) 22:43:50.23 ID:9+y/Vhuv0
iのかわりに p と p2 を++しろ

17: 2019/06/08(土) 22:44:18.78 ID:LL4vFXoZd
>>15
かわりってなに?

18: 2019/06/08(土) 22:44:31.99 ID:LL4vFXoZd
forの()内を変えるの?

19: 2019/06/08(土) 22:44:47.12 ID:9+y/Vhuv0
>>18
せや

21: 2019/06/08(土) 22:45:00.88 ID:LL4vFXoZd
>>19
ありがとうやってみます

26: 2019/06/08(土) 22:45:56.75 ID:LL4vFXoZd
>>19
2つできなくない?

28: 2019/06/08(土) 22:46:21.40 ID:9+y/Vhuv0
>>26
,で区切ったらええんや

31: 2019/06/08(土) 22:46:35.10 ID:LL4vFXoZd
>>28
なるほど

33: 2019/06/08(土) 22:47:21.08 ID:LL4vFXoZd
>>28
やったけど上手くいかんかったわ

40: 2019/06/08(土) 22:48:14.56 ID:9+y/Vhuv0
>>33
どうやったんや

43: 2019/06/08(土) 22:48:36.66 ID:LL4vFXoZd
>>40
全部*p *p2にした

49: 2019/06/08(土) 22:50:13.15 ID:9+y/Vhuv0
>>43
すまん20で終わりのことかんがえてへんかったわ
iを追加してくれ

53: 2019/06/08(土) 22:50:45.98 ID:LL4vFXoZd
>>49
わからん

57: 2019/06/08(土) 22:51:16.43 ID:9+y/Vhuv0
>>53
マジかよ
お手上げやできませんって言おう

23: 2019/06/08(土) 22:45:12.29 ID:0ejQQpNb0
配列じゃなくて++すればいいだけやんけ
でもこのパターンで配列使わないほうが異常だからこのまま出せ

29: 2019/06/08(土) 22:46:23.61 ID:LL4vFXoZd
>>23
わからん

24: 2019/06/08(土) 22:45:22.99 ID:aHRNxaeo0
*(p+i)じゃないの

34: 2019/06/08(土) 22:47:27.73 ID:SJ7LOuu30
ポインタを使ってっていうけど式中の配列はポインタと同じやぞ
だから既にポインタ使ってますと説明せえ

39: 2019/06/08(土) 22:47:56.40 ID:LL4vFXoZd
>>34
そうなの?

36: 2019/06/08(土) 22:47:48.38 ID:SrjM2r020
elseの前に閉じ括弧足りねえだろ

41: 2019/06/08(土) 22:48:23.94 ID:SrjM2r020
>>36
elseのあとに開き括弧だったわ

37: 2019/06/08(土) 22:47:51.86 ID:c+tZxNIw0
char *pはp[0]と同じ つまりpをp[1]にするには

45: 2019/06/08(土) 22:49:03.55 ID:LL4vFXoZd
>>37
1個ずつ増やすんだね

55: 2019/06/08(土) 22:51:06.73 ID:c+tZxNIw0
>>45
charは1バイトだからそれでいいけどintとか2バイト以上になるとあかんかったかな

42: 2019/06/08(土) 22:48:34.91 ID:NzzrebWA0
forの後何も括ってないのなんで

44: 2019/06/08(土) 22:48:48.19 ID:LL4vFXoZd
>>42
そう習ったから

48: 2019/06/08(土) 22:49:50.89 ID:LL4vFXoZd
iは?

50: 2019/06/08(土) 22:50:13.42 ID:LL4vFXoZd
piを*pにしたらi無くね

52: 2019/06/08(土) 22:50:22.84 ID:SrjM2r020
ワイ間違ってるやん
てかforの後には{}つける癖になんでelseのあとに{}つけないんだよ

59: 2019/06/08(土) 22:51:22.90 ID:LL4vFXoZd
>>52
気分

60: 2019/06/08(土) 22:51:50.08 ID:NzzrebWA0
まずこれをコンパイルしろよ
おかしいことに気づくから

64: 2019/06/08(土) 22:52:10.69 ID:LL4vFXoZd
>>60
いやこれは実行結果上手く出るよ

84: 2019/06/08(土) 22:55:06.81 ID:NzzrebWA0
>>64
コンパイルが通ったってだけじゃないの

86: 2019/06/08(土) 22:55:31.86 ID:LL4vFXoZd
>>84
想定した通りの実行結果が出る

70: 2019/06/08(土) 22:52:56.60 ID:hNGKFHSq0
配列はポインタやん

71: 2019/06/08(土) 22:53:05.81 ID:LL4vFXoZd
>>70
???

72: 2019/06/08(土) 22:53:17.15 ID:aVH1inqO0
c言語って組み込み系めざしてるんか?

74: 2019/06/08(土) 22:53:27.51 ID:LL4vFXoZd
>>72
いや別に

79: 2019/06/08(土) 22:54:25.92 ID:0ejQQpNb0
もう出てるやろ
p[i]を*(p+i)にp2[i]を*(p2+i)にせえ

でも配列のほうがいいから修正はするな

81: 2019/06/08(土) 22:54:42.77 ID:LL4vFXoZd
>>79
ありがとう

90: 2019/06/08(土) 22:56:14.58 ID:hnTHxXWH0
>>79
これに書き直したとこで見た目が違うだけで処理一緒やんけ

94: 2019/06/08(土) 22:56:42.38 ID:LL4vFXoZd
>>79
だめだった

106: 2019/06/08(土) 22:59:34.32 ID:0ejQQpNb0
>>94
何がだめだったんや
結果が変わったんか

113: 2019/06/08(土) 23:00:19.86 ID:LL4vFXoZd
>>106
いじりすぎてて出来なかっただけ
直したらちゃんとできたわ

80: 2019/06/08(土) 22:54:32.13 ID:dbq97J7a0
動けばええんや!
ポインタなんかいらん

83: 2019/06/08(土) 22:54:55.88 ID:LL4vFXoZd
>>80
ポインタ使えっていわれた

107: 2019/06/08(土) 22:59:41.35 ID:B9q1w+Vup
これでどうや

void func(char *p, char *p2, char org)
{
int i;
for(i=0;i<20;i++){
if (p== org){
p*= 'X';
}
else{
p2*= p*;
}
p++;
p2++;
}

117: 2019/06/08(土) 23:00:49.54 ID:LL4vFXoZd
>>107
これだと何故かできないんたげとなんでだ?

131: 2019/06/08(土) 23:02:43.52 ID:hNGKFHSq0
>>117
*の位置おかしいで

136: 2019/06/08(土) 23:03:36.64 ID:LL4vFXoZd
>>131
それはただのミスじゃね

132: 2019/06/08(土) 23:02:45.11 ID:FRK8SXtK0
>>117
if (p== org){
ここがポインタとcharの比較になってる

138: 2019/06/08(土) 23:03:51.20 ID:LL4vFXoZd
>>132
それも打ちミスじゃね

108: 2019/06/08(土) 22:59:45.22 ID:LL4vFXoZd
*(p+i)だとできるのにp++だと出来ないのはなぜ?

110: 2019/06/08(土) 23:00:01.80 ID:5lk5G0YZ0
ポインタつこてるやん

118: 2019/06/08(土) 23:00:50.96 ID:vxMUKHx10
void func(char *p, char *p2, char org)
{
int i;
for(i=0;i<= 20;i++)
if (*(p+i) == org)
{
*(p+i) = 'X';
}
else
*(p2+i) = *(p+i);
}

答えから言えばこれが正解や

122: 2019/06/08(土) 23:01:12.27 ID:LL4vFXoZd
>>118
これだとできる

119: 2019/06/08(土) 23:00:54.81 ID:aHRNxaeo0
何がしたいのかよくわからないけど
p[i] = 'X'; のとこは
p2[i] = 'X'; じゃなくていいの?

125: 2019/06/08(土) 23:01:56.65 ID:LL4vFXoZd
>>119
そうだわコピペミス

121: 2019/06/08(土) 23:01:10.31 ID:1aCp+q100
C言語ってなんで廃れないの?

130: 2019/06/08(土) 23:02:33.40 ID:NzzrebWA0
>>121
組み込み需要