
自分で色々考えていたのですが中々分からなくて・・・
#include<stdio.h>
#include<string.h>
int moji(char* b1,char *b2)
{
char b[11];
int x;
strcpy(b, b1);
strcat(b, b2);
x = strlen(b);
return x;
}
main()
{
char a[4] = "alt";
char b[8] = "recorde";
int c;
c = moji(a, b);
printf("文字数は%d\n", c);
}
のプログラムでmoji関数の部分にあるstr~を全部接続節(for)等で作成してポイントで持ってきた文字を連結するにはどうすればいいでしょうか?
strに慣れて自分で作れなくならないためにもお力をかしいただけると嬉しいです。
No.2ベストアンサー
- 回答日時:
#1の回答と似たようなものですが、
--------------------------------
int moji(char *b1, char *b2)
{
char b[256];
int cnt=0;
for(; *b1 != '\0'; b1++){
b[cnt] = *b1;
cnt++;
}
for(; *b2 != '\0'; b2++){
b[cnt] = *b2;
cnt++;
}
b[cnt] = '\0';
printf("%s\n", b); /*チェック用*/
return cnt;
}
--------------------------------
文字数だけ欲しいなら、連結しなくてもそれぞれ文字数数えて足せばいいけど、
それは質問の趣旨に反するんでしょうね^^;
> #1
> };
whileブロックの終わりと、関数ブロックの終わりにセミコロンが有りますが、これは不必要ですよ。
空文になるので、この場合有っても実害はないかな。
> while(TRUE)
どこかでdefineしていない限り、TRUEという定数はないと思います。(C++ならtrueは有る。)
無限ループはwhile(1)で。
(b1[x]をループ継続条件にしても良さそう。)
> return y-1;
引かなくても良さそうな気が…。
No.4
- 回答日時:
sprintfの戻り値は、文字数。
int moji(char* b1, char* b2)
{
char b[MAX_LEN+1];
int x;
x = sprintf(b,"%s%s",b1,b2);
return x;
}
No.1
- 回答日時:
文字列配列の中に入ってるのは全部単なる“数値”であり、引数で文字列を渡す場合には、配列先頭のアドレスを渡してるということが分かれば、応用することができます。
int moji(char* b1,char *b2)
{
char b[256]; // 十分な長さの配列を確保(文字列長を得てから確保した方が良い)
int x=0; // ループカウンタ
int y=0; // b配列の文字位置
while(TRUE){ // forとstrlenで書き換え可能
if(!b1[x]){break;} // NULLならループを抜ける
b[y]=b1[x];
x++;
y++;
};
x=0;
while(TRUE){
if(!b2[x]){break;} // NULLならループを抜ける
b[y]=b2[x];
x++;
y++;
};
b[y]=0; // NULLを付加
return y-1;
};
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
文字列ポインタを結合
C言語・C++・C#
-
HEWを使用しているのですが、このようなエラーが出ました。
C言語・C++・C#
-
文字列の連結
C言語・C++・C#
-
-
4
strcat関数を自作したいです
C言語・C++・C#
-
5
c言語 16進数の2進数への変換
C言語・C++・C#
-
6
C言語の入力した文字を反転させるプログラミングの仕方が分かりません。
Ruby
-
7
プログラミングが分かりません。
C言語・C++・C#
-
8
構造体のメンバをfor文で回したい
C言語・C++・C#
-
9
文字列から空白を取り除きたいのですが
C言語・C++・C#
-
10
数字以外が入力されたらエラー文を出したい。
C言語・C++・C#
-
11
C言語のポインターに関する警告
C言語・C++・C#
-
12
strcmp
C言語・C++・C#
-
13
構造体の勉強中です 合計点の高い順に並べ替えがわかりません
C言語・C++・C#
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語のfor文です。 繰り返しの...
-
fgetsなどのときのstdinのバッ...
-
ftoa の作り方
-
テキストデータをそのままバイ...
-
c++ 文字列を入力して、一文字...
-
文字列から空白を取り除きたい...
-
間接操作のレベルとは
-
C言語 バイナリファイルをfloa...
-
【C言語】テキストファイル内の...
-
起動時の引数の取得方法が分か...
-
fgetc()関数の動作について
-
pingの結果を取得する方法
-
c言語配列の結合についてです。...
-
間接参照のレベルが異なっています
-
switch文で文字を比較すること...
-
C言語のポインターで詰まっている
-
c言語プログラミング実行時エラ...
-
配列をnビットシフトする
-
std::stringstream で得るもの...
-
sprintfに同じ変数は使えるか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構造体の各メンバにfor文からア...
-
fgetsなどのときのstdinのバッ...
-
文字列から空白を取り除きたい...
-
C言語のfor文です。 繰り返しの...
-
CStringをwchar_tに変換したい
-
間接参照のレベルが異なっています
-
c++ 文字列を入力して、一文字...
-
C言語の入力した文字を反転させ...
-
charからLPTSTRへの変換方法
-
ネットワークにつながっている...
-
'const char *' 型は 'char *' ...
-
テキストデータをそのままバイ...
-
c言語でユーザ関数を利用して入...
-
atoi( ) の反対をやりたい
-
間接操作のレベルとは
-
-'0'の意味について
-
double型の値をchar配列に変換...
-
Linuxでフォルダ内全ファイル名...
-
配列をnビットシフトする
-
c言語でソーベルフィルタが作り...
おすすめ情報