Cの標準関数だけで
char*を初期化したいのですが
どの様にすればいいのでしょうか?

char* a = "aaaa";
char* b = "bbbb";
strcat( a, b );//"aaaabbbb"?
とし使いまた後で
aにまた値を入れ直したいので
初期化して再利用したいのですが

どのようにすればいいのでしょうか?

ポインタとかもうっすら(ほとんどわかりません)
よろしくお願いいたします

このQ&Aに関連する最新のQ&A

A 回答 (2件)

> char* a = "aaaa";


> char* b = "bbbb";
> strcat( a, b );//"aaaabbbb"?
この上のコードは間違っていますよ。
変数a、bに入っているのはあくまでも文字列の"ポインタ"です。
従いまして、strcat( a, b );とすると、aがさしているメモリは5バイトしかないのでメモリを破壊してしまいます。
static char sza[] = "aaaa";
static char szb[] = "bbbb";
char szBuffer[256];
char* a = szBuffer;
strcpy (a, sza);
strcat (a, szb);
としないとだめです。

またポインタ変数はNULLで初期化可能です。
    • good
    • 0
この回答へのお礼

ありがとうございます
元々おかしかったのですね........
勉強不足で恥ずかしいです
参考にさせていただきがんばります
ありがとうございました

お礼日時:2003/10/15 09:57

char*型の変数=NULL;



で初期化できませんでしたっけ。
ポインタ変数の初期化にはNULLを使用するような記憶があります。
間違いだったらすみません。
    • good
    • 0
この回答へのお礼

ありがとうございます
NULLですね
一度やったのですが
上の方が言われるように 間違っていたので
だめだったようです............
またやってみます

お礼日時:2003/10/15 09:53

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qアイフォン自体で初期化する方法を教えてください。 パスワード(6桁)も忘れ、パソコンにもitune

アイフォン自体で初期化する方法を教えてください。

パスワード(6桁)も忘れ、パソコンにもitunesを作ってなくてバックアップもしていないので、どうすればアイフォンを初期化出来るのか分かりません。

Aベストアンサー

>iCloudもパソコンもなく単体しかない場合は、どうやってリストアすれば良いのでしょうか。。。

最寄りのApple正規ブロバイダか契約キャリアで初期化して貰って下さい。
Apple正規ブロバイダ(サービスに地域を入れて検索)
→https://locate.apple.com/jp/ja/

Qchar *str; と char* str;

char *str; と char* str;
どっちも同じことを意味しているんですか?

Aベストアンサー

同じことを指している、というのは、先の回答の通りです。

また、ひとつの宣言で変数を複数宣言したときに、char* str という表記は間違い
易いじゃないか、ということが言われているのも事実です。実際、いろいろな C のソースを
見ていても、まずアスタリスクを型につけて書くのは、まずお目にかかれません。

ただ C++ では、char* str という宣言も良く使われています。

C++ に限らずオブジェクト指向の言語は、強く型を意識するので、「文字のポインタ型」と
いう意味で、まとめて書く方が馴染むのでしょう。ちなみにそういう風な人たちは

char *str1, *str2;

とは、書けない体になっています。

char* str1;
char* str2;


変数の宣言だと、C に慣れていれば、char* str というのはちょっと違和感があるのは
私も分かりますが、関数のプロトタイプ宣言だと、どちらの方がすっきりしますか?

extern char *memcpy(char *, const char *);

extern char* memcpy(char*, const char*);


# まあ、どっちが正しい、っていうんじゃ無いんですよね

同じことを指している、というのは、先の回答の通りです。

また、ひとつの宣言で変数を複数宣言したときに、char* str という表記は間違い
易いじゃないか、ということが言われているのも事実です。実際、いろいろな C のソースを
見ていても、まずアスタリスクを型につけて書くのは、まずお目にかかれません。

ただ C++ では、char* str という宣言も良く使われています。

C++ に限らずオブジェクト指向の言語は、強く型を意識するので、「文字のポインタ型」と
いう意味で、まとめて書く方が馴染む...続きを読む

QiPhone5初期化 PCフリーズ 同期出来ない

iPhoneは5で、
PCはWindows Vistaです。

iPhoneのアップデート中に、
「不具合が見つかったので初期化して下さい」
と出たので初期化しようとしたのですが、
PC自体がフリーズしてしまい…アップルストアに行って初期化してきました。

初期化したiPhoneを元に戻したいので同期しようとしたのですが、PCでiTunesを開くとフリーズしてしまい…
何をやってもダメなので強制終了することになります。

もうiPhoneを元に戻す事は不可能でしょうか?

新しいPCを買ったとしても、
今のPCがフリーズしてしまうので、
新しいPCにデータを送る事も出来ませんか?

中身が空っぽだと仕事に支障をきたすので…元に戻したいです。

お分かりになる方いらっしゃいましたら、
宜しくお願い致します。

Aベストアンサー

>新しいPCを買ったとしても、今のPCがフリーズしてしまうので、
新しいPCにデータを送る事も出来ませんか?

PCが起動出来るので有れば、標準の移行マニュアルでデータ移行出来ると思いますが、iTunesのデータのみ取り出したい場合はHDDに直接アクセスしてiTunesメディアフォルダを移動させる事でデータは移行出来ます。
→http://support.apple.com/kb/ht1364?viewlocale=ja_JP
バックアップは別場所に有りますので、そのフォルダも一緒に移動させて下さい。
バックアップの保存先参照
→http://support.apple.com/kb/ht4946?viewlocale=ja_JP

Qchar c = 'a'; char h[1] = c; エラー

char型のものを char[]型に代入したいです。

char c = 'a';
char h[1] = c;

として、

h[0] は \x97
h[1] は \x00

にしたいです。
型変換の方法を教えてください。

Aベストアンサー

とりあえず、確認を。

C では、'a'の表す値は 0x61 = 97 であって、 \x97 ではないと思います。
(\xnnn を、十六進数の意味に取りましたが、あってますでしょうか?
この場合、C では通常 0xnnn のように書くと思います。)
ので、 これは 0x61 のことをおっしゃっていると仮定します。

> char h[1] = c;
っと、これではたぶんコンパイルが通りません。

char h[1] = {c};

のように、配列であることを明示して代入してください。
この式では、前半でh という名前の、*長さ1 の* char の配列変数を確保します。
後半で、その中を初期化しています。
添え字は 0 からはじまるので、この場合、h[0] に c の内容が代入されます。
1個しか場所を確保していないので、 h[1] の位置のデータは内容が不定です。
文字列として h を扱いたいのであれば、 C の文字列には終端として 0 が必要ですから、
char c = 'a';
char h[2] = { c, '\0'};

のような書き方が必要になります。
これで、お望みのデータになると思います。

とりあえず、確認を。

C では、'a'の表す値は 0x61 = 97 であって、 \x97 ではないと思います。
(\xnnn を、十六進数の意味に取りましたが、あってますでしょうか?
この場合、C では通常 0xnnn のように書くと思います。)
ので、 これは 0x61 のことをおっしゃっていると仮定します。

> char h[1] = c;
っと、これではたぶんコンパイルが通りません。

char h[1] = {c};

のように、配列であることを明示して代入してください。
この式では、前半でh という名前の、*長さ1 の* char の配列変数...続きを読む

Q母艦初期化でiTunesと同期できません

初歩的な質問ですみません。

iPhoneと、iTunesを使って同期させているPCがトラブルで初期化してしまい
新たにiTunesをインストールしてiPhoneを接続したところ

「これはほかのiTunesライブラリと同期しています。iPhoneの内容を消去しこのITunesライブラリと同期してもよろしいですか? …1つのiPhoneは一度に1つのiTunesライブラリとしか同期できません…」

といったメッセージが出てしまいます。
もちろん、アプリやmp3を削除されたくないので同期できないのですが…

こういった場合、iPhoneの内容を消去せずに新たな同期を作ることはできないのでしょうか?

Aベストアンサー

自分も以前に同じ事がありましたが、専用のソフトを使えばiPhone内のデータを呼び込む事ができます。呼び込んだデータを新しくダウンロードしたiTunesへ移行すればOKです。音楽、ビデオ、アプリも大丈夫ですが、アプリ内のランキングとかデータは初期化されます。音楽も歌手名とか曲名とか画像は大丈夫ですが、曲によっては音量が変更されているので後で変更が必要だったりします。ちなみにソフトの値段は8000円くらいしました。ソフトはヤマダ電機とかで買ったと思います。

Q”int *a,*b”というポインタ変数宣言した値でa=&bということ

”int *a,*b”というポインタ変数宣言した値でa=&bということはできる?


”int *a,*b”このような変数をグローバル宣言した場合、
a=&bというようなことはできるのでしょうか?


”int *a,*b”
この宣言で、
aが10番地
bが20番地に定義されたと仮定しています。

Aベストアンサー

#6です。
>回答頂きありがとうございます。
>一応整理させてください。
>質問1:
>(1)int *a, *b; //宣言
>(2)a = b;
>これをメモリアドレスの変化で見ていった場合、
>(1)
>アドレス10:a NULL
>アドレス20:b (仮に1200)
>(2)
>アドレス10:a (仮に1200)
>アドレス20:b (仮に1200)
回答:
OKです。但し
アドレス10:a NULL のところは正確には、アドレス10:a 不定
となります。
不定の意味は初期化していないので何が入っているか判らない。
(0かも知れないし、そうでないかも知れない。あるいは35かも知れないし、そうでないかもしれない)
という意味です。(NULLの箇所は以降同じです)


>質問2:
>(1)' int *a, *b; //宣言
>(2)' a = (int *)&b;
>これをメモリアドレスの変化で見ていった場合
>(1)'
>アドレス10:a NULL
>アドレス20:b NULL
>(2)'
>アドレス10:a 20
>アドレス20:b NULL
>このような違いがあるということですね。
回答
はい、その通りです。

>質問3:
>int *a, *b; //宣言
>a=&b;
>このやり方はできないので、
>もし、やりたいのならば、
>(1)'' int **a, *b //宣言
>(2)'' a=&b;
>これをメモリアドレスの変化で見ていった場合
>(1)''
>アドレス10:a NULL
>アドレス20:b NULL
>(2)''
>アドレス10:a 20
>アドレス20:b NULL
>このようにメモリ内が変化していくということなんでしょうか?
回答
はい、その通りです。
>質問3のポインタのポインタの使い方はこれでよいでしょうか?
回答
はい、よいです。
ちなみに、このような事例に遭遇することはないでしょうが、
int ***a,**b;
の場合、a=&bは構文的に正しいです。
a=(int***)b;(強引なキャスト)
も正しいです。
int *a;
int **a;
int ***a;
の違いを理解することが必要です。
使いませんが、
int **********a;なども構文的にはありです。

#6です。
>回答頂きありがとうございます。
>一応整理させてください。
>質問1:
>(1)int *a, *b; //宣言
>(2)a = b;
>これをメモリアドレスの変化で見ていった場合、
>(1)
>アドレス10:a NULL
>アドレス20:b (仮に1200)
>(2)
>アドレス10:a (仮に1200)
>アドレス20:b (仮に1200)
回答:
OKです。但し
アドレス10:a NULL のところは正確には、アドレス10:a 不定
となります。
不定の意味は初期化していないので何が入っているか判らない。
(0かも知れないし、そうでないかも知れない。あるいは35かも知れない...続きを読む

Qiphone(アイフォン)の初期化

ご覧いただきまして、ありがとうございます。iphoneのことで質問します、ご存知でしたら、教えてください。よろしくお願いします。

iphone5sを使っていますが、iosはバージョン8.02です。
1)以前の7.12のバージョンに戻したいのですが、方法はありますでしょうか。
2)iphoneを初期化したら、バージョンは元に戻るのでしょうか。
3)r-sim10というものがあるようですが、iphone5s ios8.02以上 iphoneのキャリアはauの条件でシムフリー化に成功した方はいらっしゃいますか。

どのようなことでも構いませんので、書き込みをお待ちしています。

Aベストアンサー

以前のバージョンには戻せない決まりです。諦めて下さい。
下駄使用は個人責任ですが、キャリアモデルを下駄使用でSIMフリー化してもアップルではバレバレなので規約違反になり、下手をするとAppleIDの停止などのペナルティを喰らう事が有りますので気を付けて下さい。
また、付加装置の取り付けは改造に辺り、技適マークの有効性が無くなり、電波法違法の可能性が有る事も書き加えて置きます。

Qchar *(*)[3];について

#include <iostream.h>
main(){
char *(*pp)[3];
printf("%lu", sizeof(char*));
printf(" pp%lu", pp);
printf(", ++pp%lu", ++pp);
}

これを実行して
4 pp6660000, ++pp???????
のように表示されたときに、???????の部分が何になるか考えました。
ppはchar[3]を指すポインタのポインタだから、ppをインクリメントすれば、「char[3]を指すポインタ」の大きさだけ大きくなるはずだから、「char[3]を指すポインタ」の大きさである4バイト大きくなるはずだから
4 pp6660000, ++pp6660004
になると思いました。
どこを勘違いしていてどう考え直せばよいか教えて下さい。

Aベストアンサー

pp は、3コのポインタの配列へのポインタです。
ポインタのサイズが4バイトの時、
pp をインクリメントすると12バイト増えることになります。

例えば、次の様に書くとわかりやすいと思います。
#include <cstdio>

using namespace std;
// CHAR3 は、3のサイズを持つchar の配列
typedef char CHAR3[3];

int main(){
CHAR3 *pc3;//pc3 は、char[3]を指すポインタ
char test[3];
pc3=&test;
printf("%p\n",pc3);
pc3++;
printf("%p\n",pc3);//+3(サイズ分)される

CHAR3 **ppc3;//ppc3 は、char[3]を指すポインタのポインタ
ppc3=&pc3;
printf("%p\n",ppc3);
ppc3++;
printf("%p\n",ppc3);//+4(ポインタサイズ分)される

return 0;
}

pp は、3コのポインタの配列へのポインタです。
ポインタのサイズが4バイトの時、
pp をインクリメントすると12バイト増えることになります。

例えば、次の様に書くとわかりやすいと思います。
#include <cstdio>

using namespace std;
// CHAR3 は、3のサイズを持つchar の配列
typedef char CHAR3[3];

int main(){
CHAR3 *pc3;//pc3 は、char[3]を指すポインタ
char test[3];
pc3=&test;
printf("%p\n",pc3);
pc3++;
printf("%p\n",pc3);//+3(サイズ分)される

CHAR3 **ppc3;//p...続きを読む

Qauから借りているパソコンの初期化について

こんにちは
アイフォン5を購入したときにWi-Fiとノートパソコンを借りました
元々パソコンを持っていなかったのでインターネット関係に疎く質問させていただきます
パソコンからアイフォンに画像を送りたいのですが送ろうとするとデバイスが応答しない、接続されてない?等の表示が出ます
USB2.0-CRWがないっぽいです 汗
それと他にも変なサイト(エロゲ系なゲーム)にとんだりします
そのことで困っており初期化しようかと思ってます

ですが、一応お金は払っていますが借り物ですし
初期化したらもう接続しなくなったりしたら困りますしそんな感じで悩んでます
自分でも調べたりして色々やってみましたが解決されません
もう初期化しかないのかなと悩んでます
初期化したら貰った当時の内容にもどりますか?インターネットにも元々繋がっていました
文章全然まとまっていませんが回答よろしくお願いします
本当に初心者です(T _T)すみません

Aベストアンサー

Auで対応してもらう事です、レンタルである以上Auの所有物ですから、貴方が勝手に初期化できません、(PCが勝手にリカバリするオートリカバリは別です)
また初期化した場合、WiFiルーターの接続設定など貴方が出来ますか?初期化すれば当然、WiFiルーターなどの認証データーも消えるので、設定はやり直さないといけません。
>初期化したらもう接続しなくなったりしたら困ります
接続できなくなります

Qfor(s=p; *p; p++)の*p(ポインタ)の意味

for(s=p; *p; p++)の*p(ポインタ)の意味
C言語初心者です。
今ポインタを勉強しているのですが、
for文で上記のようなものが出てきて、意味が分からず困っています。
*pで*p != NULL と同じような意味になるみたいなのですが…。
どうしてそのような意味になるのでしょうか?

ちなみにsとpはポインタで、
sには配列(入力した文字列)の先頭アドレスが入っています。
pは文字列を指していて○○○○○NULL ←になるから上記のような条件で
回るんだろうなぁとはなんとなく考えているのですが。

Aベストアンサー

念のため:
ヌルポインタは「ビットパターンとして」0 じゃないかもしれませんが, ソースプログラムにおいて「ポインタが要求される場面」で「0」とあれば, それは「ヌルポインタ」です.
もうちょっと厳密に書くと「整定数 0」はヌルポインタに変換される.


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報