質問編集履歴
5
質問の改善
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
ポインタ
|
1
|
+
ポインタについて
|
body
CHANGED
@@ -1,13 +1,4 @@
|
|
1
|
-
いつもお世話になっています。c言語初心者で勉強中です。課題で、文字列のn文字目の後ろに、標準入力から入力した単語を挿入時に文字列の長さが1023文字を超えても動作しつづけるプログラムを作成したいんです。
|
2
|
-
実行したいこと
|
3
|
-
./a.out
|
4
|
-
[Wakamatsu]
|
5
|
-
0 Atui
|
6
|
-
[Atui][Wakamatsu]
|
7
|
-
11 young
|
8
|
-
[Atui][Waka[young]matsu]
|
9
|
-
23 pine
|
10
|
-
[Atui][Waka[young]matsu[pine]]
|
1
|
+
いつもお世話になっています。c言語初心者で勉強中です。課題で、文字列のn文字目の後ろに、標準入力から入力した単語を挿入時に文字列の長さが1023文字を超えても動作しつづけるプログラムを作成したいんです。
|
11
2
|
以下がコードです。```C言語
|
12
3
|
コード
|
13
4
|
```
|
4
質問の改善
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
ポインタ
|
1
|
+
ポインタで、文字列挿入
|
body
CHANGED
File without changes
|
3
質問の改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,13 @@
|
|
1
1
|
いつもお世話になっています。c言語初心者で勉強中です。課題で、文字列のn文字目の後ろに、標準入力から入力した単語を挿入時に文字列の長さが1023文字を超えても動作しつづけるプログラムを作成したいんです。いろいろ考えたんですが、流れがうまくつかめず、苦戦しています。nのアドレスを知って、配列の中身を1つずらそうとおもったんですが、p=&nでは変数の型が違くてアドレスを得られませんでした。どうやればnのアドレスを得られるのか教えて下さい。また流れがいまいちわからないので、流れもよろしければ教えてください。
|
2
|
+
実行したいこと
|
3
|
+
./a.out
|
4
|
+
[Wakamatsu]
|
5
|
+
0 Atui
|
6
|
+
[Atui][Wakamatsu]
|
7
|
+
11 young
|
8
|
+
[Atui][Waka[young]matsu]
|
9
|
+
23 pine
|
10
|
+
[Atui][Waka[young]matsu[pine]]
|
2
11
|
以下がコードです。```C言語
|
3
12
|
コード
|
4
13
|
```
|
2
質問の改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
いつもお世話になっています。c言語初心者で勉強中です。課題で、文字列のn文字目の後ろに、標準入力から入力した単語を挿入
|
1
|
+
いつもお世話になっています。c言語初心者で勉強中です。課題で、文字列のn文字目の後ろに、標準入力から入力した単語を挿入時に文字列の長さが1023文字を超えても動作しつづけるプログラムを作成したいんです。いろいろ考えたんですが、流れがうまくつかめず、苦戦しています。nのアドレスを知って、配列の中身を1つずらそうとおもったんですが、p=&nでは変数の型が違くてアドレスを得られませんでした。どうやればnのアドレスを得られるのか教えて下さい。また流れがいまいちわからないので、流れもよろしければ教えてください。
|
2
2
|
以下がコードです。```C言語
|
3
3
|
コード
|
4
4
|
```
|
@@ -10,30 +10,50 @@
|
|
10
10
|
|
11
11
|
int main(){
|
12
12
|
char init[]="[Wakamatsu]"; /* 初期データ用文字列 */
|
13
|
-
char *str;
|
13
|
+
char *str,*buf,*mou;
|
14
14
|
int n;
|
15
15
|
char input[BUFSIZE]; /* 入力用文字列バッファ */
|
16
16
|
/* その他の変数を宣言 */
|
17
|
-
int kazu;
|
17
|
+
int kazu,mozi;
|
18
|
+
char *p;
|
19
|
+
|
18
20
|
/* strの初期化を記述する*/
|
19
21
|
str=init;
|
20
22
|
/* strlen,malloc,strcpyを使いstrにinitの内容のコピーを保持させる
|
21
23
|
*/
|
22
|
-
|
24
|
+
kazu=strlen(init);/*文字列をコピーするからinit[i]みたいに文字として表記しない。*/printf("kazu=%d\n",kazu);
|
23
|
-
str=(char*)malloc(
|
25
|
+
str=(char*)malloc(kazu*sizeof(char));
|
24
|
-
strcpy(str,init
|
26
|
+
strcpy(str,init);/*文字列をコピーするからinit[i]みたいに文字として表記しない。*/
|
25
27
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
28
|
while (1) {
|
30
|
-
|
29
|
+
printf( "%s\n", str );
|
31
30
|
if( scanf("%d %s", &n, input) != 2 ) break;
|
32
|
-
ここのscanfのところまで、実行したいです。その次の処理の内容記述のところまでは、まだ考え中です。
|
33
31
|
/*
|
34
32
|
* 処理の内容を記述する
|
33
|
+
*/ mozi=strlen(input);
|
34
|
+
buf=(char*)malloc(kazu+2+mozi*sizeof(char));
|
35
|
+
mou=(char*)malloc(mozi+2*sizeof(char));
|
36
|
+
// mou[0]='[';
|
37
|
+
// mou[mozi+2]=']';
|
38
|
+
strncpy(mou,input,mozi+2);
|
35
|
-
|
39
|
+
mou[0]='[';
|
40
|
+
mou[mozi+2]=']';
|
41
|
+
printf( "%s\n", mou);
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
36
|
-
}
|
48
|
+
}
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
37
58
|
free(str);
|
38
|
-
return 0;
|
59
|
+
return 0;
|
39
|
-
}
|
1
質問の改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
いつもお世話になっています。c言語初心者で勉強中です。課題で、文字列のn文字目の後ろに、標準入力から入力した単語を挿入するプログラムを作りたいのですが、実行がうまくい
|
1
|
+
いつもお世話になっています。c言語初心者で勉強中です。課題で、文字列のn文字目の後ろに、標準入力から入力した単語を挿入するプログラムを作りたいのですが、実行がうまくいかず、コンパイルエラーになってしまいます。何がおかしいか教えて下さい。
|
2
2
|
以下がコードです。```C言語
|
3
3
|
コード
|
4
4
|
```
|