C言語で任意の文字列で任意の文字だけ伏字にするプログラム作りたいんだけど

1: 2019/06/04(火) 21:43:10.35 ID:bFjgrACFd
上手く実行できない
なにがいけない?

#include<stdio.h>
#include<stdlib.h>
void func(char *p, char *p2, char org);
int main(void)
{
char ss[20], org_character[2];
char cp[20];
printf("文字列を入力してください\n");
scanf_s("312", ss, 20);
printf("伏字にしたい文字(元の文字)を入力してください(1文字)\n");
scanf_s("176", org_character, 1);
printf("入力した文字列:\n", ss);
mask(ss, cp, *org_character);
printf("置換された文字列:\n", cp);
system("pause");
return 0;
}
void func(char *p, char *p2, char org)
{
int i;
for (i = 0; i < 20; i++)
if (p[i] == org)
{
p2[i] = 'X';
}
else
p2[i] = p[i];
}

8: 2019/06/04(火) 21:44:12.67 ID:sKaJiwuZp
て、手打ち?

11: 2019/06/04(火) 21:44:27.02 ID:bFjgrACFd
>>8
手打ち

10: 2019/06/04(火) 21:44:26.37 ID:h1ruz+1a0
他の言語なら1行で書けるで

14: 2019/06/04(火) 21:44:39.04 ID:bFjgrACFd
>>10
C言語で

12: 2019/06/04(火) 21:44:35.19 ID:Z88SOeRU0
コンパイラ何ってでた?

16: 2019/06/04(火) 21:44:59.06 ID:bFjgrACFd
>>12
コンパイルは普通にできた
実行がうまいこといかない

23: 2019/06/04(火) 21:45:50.99 ID:9fSckLeY0
変換後の文字列 = 任意の文字列.replace(任意の文字,伏字)
はい

36: 2019/06/04(火) 21:47:03.30 ID:bFjgrACFd
>>23
わからん

27: 2019/06/04(火) 21:46:05.50 ID:SAVYe/Dz0
目的の実行例書いてくれや

42: 2019/06/04(火) 21:47:29.41 ID:bFjgrACFd
>>27
aiueo
Xiueo

38: 2019/06/04(火) 21:47:12.21 ID:9vGaWjwer
func=maskってことでいいの?

49: 2019/06/04(火) 21:48:06.71 ID:bFjgrACFd
>>38
ごめんそう
分かりやすくするためにfuncにしたのにそこだけ直し忘れてた

39: 2019/06/04(火) 21:47:12.33 ID:ibiWFzCU0
割とマジに一文字づつ見るしかないんちゃう?

52: 2019/06/04(火) 21:48:33.88 ID:bFjgrACFd
>>39
だからこうやったんだけどうまくいかない

55: 2019/06/04(火) 21:48:52.67 ID:OYXelTR5M
strstrやっけ?文字列から文字列検索する関数
その返り値がnullやなかったら前後のあれであれしろ

56: 2019/06/04(火) 21:48:55.45 ID:bFjgrACFd
maskはfuncです

57: 2019/06/04(火) 21:48:59.41 ID:UF1I/v8z0
C言語ってそんな簡単な命令もないのかよ

61: 2019/06/04(火) 21:49:18.56 ID:7FlazgMP0
Cで文字列とかただの苦行やん
せめてC++やろ

66: 2019/06/04(火) 21:49:57.92 ID:bFjgrACFd
助けろ

67: 2019/06/04(火) 21:50:10.95 ID:J6WNrMilM
関数が間違ってるんやろ

69: 2019/06/04(火) 21:50:32.13 ID:bFjgrACFd
>>67
どこが

75: 2019/06/04(火) 21:50:59.49 ID:cUu+WcMxa
100字入力されたら終わりじゃねこれ

80: 2019/06/04(火) 21:51:27.27 ID:bFjgrACFd
>>75
20文字までです

81: 2019/06/04(火) 21:51:28.15 ID:3A+gWc+g0
関数の引数にする *org_character を org_charcter[0] でもあかんか?

96: 2019/06/04(火) 21:52:56.29 ID:bFjgrACFd
>>81
だめでした

117: 2019/06/04(火) 21:55:23.94 ID:q/gw4PPG0
まずmaskじゃなくてfuncやろ

162: 2019/06/04(火) 21:58:05.66 ID:bFjgrACFd
わけわからん

174: 2019/06/04(火) 21:59:05.74 ID:bFjgrACFd
NULL文字ね

176: 2019/06/04(火) 21:59:23.32 ID:WqNlEfGa0
for(i=0;p[i]!='¥0';i++)
とかがいいぞ

181: 2019/06/04(火) 21:59:40.48 ID:bFjgrACFd
>>176
ありがとう

284: 2019/06/04(火) 22:08:42.26 ID:pZeyq6Ona
for文の最初に
if (p[i] == ‘¥0’)
break;
加えればいけんか

300: 2019/06/04(火) 22:10:03.60 ID:bFjgrACFd
>>284
だめだった

323: 2019/06/04(火) 22:12:02.18 ID:goLXS3FUM
>>300
#defineの行外せや

329: 2019/06/04(火) 22:12:37.72 ID:bFjgrACFd
>>323
そんな行ない

334: 2019/06/04(火) 22:13:02.42 ID:pZeyq6Ona
if (p[i] == ‘¥0’){
p2[i] = ‘¥0’;
break;
}
やった

351: 2019/06/04(火) 22:15:02.67 ID:bFjgrACFd
>>334
だめだった

338: 2019/06/04(火) 22:13:36.51 ID:V42gmJSU0
C言語のコツ教えろ
コツというか世界観

350: 2019/06/04(火) 22:14:42.47 ID:ZFnJAVpg0
>>338
コンピュータの気持ちになって考える

347: 2019/06/04(火) 22:14:22.44 ID:UOIpNpdyr
構造体ってクラスとは違うんか?

366: 2019/06/04(火) 22:16:24.89 ID:zBX4LkJja
>>347
何の指定もないと全部publicになるクラスやけどオブジェクト指向勉強する前には構造体でやることが多い

375: 2019/06/04(火) 22:17:10.62 ID:UOIpNpdyr
>>366
構造体の考えを一般化したのがクラスって感じ?

355: 2019/06/04(火) 22:15:36.28 ID:ZjH1gqP30
プログラミングの大先生が1時間200円ぐらいで教えてやればいいのになぁ

361: 2019/06/04(火) 22:16:05.47 ID:tiDhhjTs0
#include<stdio.h>
#include<stdlib.h>
void func(char *p, char *p2, char org);
int main(void)
{
char ss[20] = "";
char org_character[2] = "";
char cp[20] = "";
printf("文字列を入力してください\n");
scanf("312", ss);
printf("伏字にしたい文字(元の文字)を入力してください(1文字)\n");
scanf("176", org_character);
printf("入力した文字列:\n", ss);
func(ss, cp, *org_character);
printf("置換された文字列:\n", cp);
//system("pause");
return 0;
}
void func(char *p, char *p2, char org)
{
int i;
for (i = 0; i < 20; i++)
if (p[i] == org)
{
p2[i] = 'X';
}
else
{
p2[i] = p[i];
}
}
これでいけたぞ

383: 2019/06/04(火) 22:17:44.59 ID:bFjgrACFd
>>361
何が違う?

391: 2019/06/04(火) 22:18:21.34 ID:goLXS3FUM
>>383
diffしろや

401: 2019/06/04(火) 22:18:46.57 ID:bFjgrACFd
>>391
何それ

380: 2019/06/04(火) 22:17:22.32 ID:4cvB40OTH
>>1
このままでやるなら、
scanf_s("",org,1)の所を1じゃなくて2にしろ

464: 2019/06/04(火) 22:23:47.96 ID:3A+gWc+g0
>>380でいけるで

ちなみに
scanf_s("", org_character, 1);
printf("入力した文字:\n", org_character);

とやるとヌル文字しか入ってないのがちゃんとわかるで

それによって
aiueo<null>

aiueoX (ここで文字列の区切りがないからそのあとに フフフフフ)
に置換してしまってたんやで

482: 2019/06/04(火) 22:25:37.66 ID:4cvB40OTH
>>464
scan_fの第三引数は入力できる文字数やけど、null文字を含めた文字なんや
nullは自動的に入るから、1だとnullしかはいらんから1文字入れたいなら2にせなあかん

490: 2019/06/04(火) 22:26:07.32 ID:zeb/HmMD0
>>482
これこれ

501: 2019/06/04(火) 22:28:19.23 ID:3A+gWc+g0
>>482
普通はsizeof なり使うし
つうか _s 使っててポインタ渡しでもないから省略してもいいのに
わざわざ1とか手で入れてるとか斜め上やな

420: 2019/06/04(火) 22:20:05.78 ID:UOIpNpdyr
C言語ガチで難しすぎやろ
Pythonクッソ楽や

427: 2019/06/04(火) 22:20:29.48 ID:W0v+SFr/0
#include<stdio.h>
#include<stdlib.h>
void func(char *p, char *p2, char org);
int main(void)
{
char ss[20], org_character[2];
char cp[20];
printf("文字列を入力してください\n");
scanf_s("", ss, 20);
printf("伏字にしたい文字(元の文字)を入力してください(1文字)\n");
scanf_s("", org_character, 2);
printf("入力した文字列:\n", ss);
func(ss, cp, *org_character);
printf("置換された文字列:\n", cp);
system("pause");
return 0;
}
void func(char *p, char *p2, char org)
{
int i;
for (i = 0; i < 20; i++)
if (p[i] == org)
{
p2[i] = 'X';
}
else
p2[i] = p[i];
}

文字列を入力してください
AAAABBBBCCCC
伏字にしたい文字(元の文字)を入力してください(1文字)
B
入力した文字列:AAAABBBBCCCC
置換された文字列:AAAAXXXXCCCC
続行するには何かキーを押してください . . .

504: 2019/06/04(火) 22:29:00.13 ID:bFjgrACFd
>>427
ありがとうできたわ

465: 2019/06/04(火) 22:23:56.86 ID:ftIdQBcL0
プログラムってただ勉強するのクッソつまらなくない?
自分はゲームのチートしたくてプロアクションリプレイから興味持って
メモリってなんやろ?って興味持ってプログラム面白!ってなったけど

489: 2019/06/04(火) 22:25:56.19 ID:L6jx65jF0
>>465
倫理的には正しくないけど正しい

472: 2019/06/04(火) 22:24:37.28 ID:kElg99yP0
情報学科3年なんやが、大学ってプログラミングとか全然しないんやな
座学ばかりやし、これでインターンシップとか行って大丈夫なんか?

486: 2019/06/04(火) 22:25:43.90 ID:cUu+WcMxa
>>472
完全未経験なら終わる
linuxくらいやっとけ

479: 2019/06/04(火) 22:25:04.63 ID:9KGe+7KH0
Cって文字列の扱いめんどすぎひん?

483: 2019/06/04(火) 22:25:40.92 ID:q/gw4PPG0
>>479
わかる
C++使いたい