質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

Q&A

2回答

452閲覧

C言語のポインタのポインタを用いた文字列の書き込み、表示について。

shunsukex1

総合スコア11

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

0グッド

0クリップ

投稿2022/06/30 15:02

C言語のポインタのポインタを用いた文字列の書き込み、表示についてご教授ください。
以下のコードを走らせてみると実行結果のそれぞれの文字列の末尾に「4文字だと[タ]」などの様々な文字がつくことがあります。
これらは一体何で、なぜ表示されてしまってるのかいまいち理解できていません。
どうかよろしくお願いします。

C言語

1#include <stdlib.h> 2#include <string.h> 3#include <stdio.h> 4 5int main() 6{ 7 char *pstr[5]; 8 char str[100]; 9 int i,j,l; 10 for (i = 0; i < 5; i++) 11 { 12 printf("Input Name"); 13 scanf("%s", str); 14 pstr[i] = (char *)malloc(sizeof(char) * (strlen(str) + 1)); 15 l=strlen(str); 16 for(j=0;j<l;j++){ 17 printf("%c\n",str[j]); 18 *(*(pstr+i)+j) = str[j]; 19 } 20 } 21 for (i = 0; i < 5; i++) 22 { 23 printf("%s\n", pstr[i]); 24 } 25} 26

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

表示されているのは確保したヒープの範囲外に残っていたデータです。
そうなるのはナル文字(¥0)を入れていないからです。

投稿2022/06/30 15:47

編集2022/06/30 15:48
RiaFeed

総合スコア2701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

C言語に置いての文字列というのは、終端に'\0'文字をくっつけた文字配列です
提示のコードでは、それがついてないため、余計なデータが表示されてしまっています

投稿2022/06/30 21:36

編集2022/06/30 21:37
y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問