teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

質問の改善

2016/11/19 13:11

投稿

ikuo-biyori
ikuo-biyori

スコア56

title CHANGED
@@ -1,1 +1,1 @@
1
- ポインタで、文字列挿入
1
+ ポインタについて
body CHANGED
@@ -1,13 +1,4 @@
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]]
1
+ いつもお世話になっています。c言語初心者で勉強中です。課題で、文字列のn文字目の後ろに、標準入力から入力した単語を挿入時に文字列の長さが1023文字を超えても動作しつづけるプログラムを作成したいんです。
11
2
  以下がコードです。```C言語
12
3
  コード
13
4
  ```

4

質問の改善

2016/11/19 13:11

投稿

ikuo-biyori
ikuo-biyori

スコア56

title CHANGED
@@ -1,1 +1,1 @@
1
- ポインタについて
1
+ ポインタで、文字列挿入
body CHANGED
File without changes

3

質問の改善

2016/11/19 13:08

投稿

ikuo-biyori
ikuo-biyori

スコア56

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

質問の改善

2016/11/19 08:49

投稿

ikuo-biyori
ikuo-biyori

スコア56

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
- kazu=strlen(init[]);
24
+ kazu=strlen(init);/*文字列をコピーするからinit[i]みたいに文字として表記しない。*/printf("kazu=%d\n",kazu);
23
- str=(char*)malloc(strlen(init[10])*sizeof(char);
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
- printf( "%s\n", str );
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

質問の改善

2016/11/19 08:42

投稿

ikuo-biyori
ikuo-biyori

スコア56

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- いつもお世話になっています。c言語初心者で勉強中です。課題で、文字列のn文字目の後ろに、標準入力から入力した単語を挿入するプログラムを作りたいのですが、実行がうまくいせん。何がおかしいか教えて下さい。
1
+ いつもお世話になっています。c言語初心者で勉強中です。課題で、文字列のn文字目の後ろに、標準入力から入力した単語を挿入するプログラムを作りたいのですが、実行がうまくいかず、コンパイルエラーになってしいます。何がおかしいか教えて下さい。
2
2
  以下がコードです。```C言語
3
3
  コード
4
4
  ```