
自分で色々考えていたのですが中々分からなくて・・・
#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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
このQ&Aを見た人はこんなQ&Aも見ています
-
HEWを使用しているのですが、このようなエラーが出ました。
C言語・C++・C#
-
文字列ポインタを結合
C言語・C++・C#
-
C言語のポインターに関する警告
C言語・C++・C#
-
-
4
c言語 16進数の2進数への変換
C言語・C++・C#
-
5
再起呼び出しの回数をカウントするプログラム
C言語・C++・C#
-
6
構造体のメンバをfor文で回したい
C言語・C++・C#
-
7
数字以外が入力されたらエラー文を出したい。
C言語・C++・C#
-
8
文字列の連結
C言語・C++・C#
-
9
文字列から空白を取り除きたいのですが
C言語・C++・C#
-
10
strcat関数を自作したいです
C言語・C++・C#
-
11
複数の変数を宣言する時、同時に初期化?できないでしょうか?
Java
-
12
バッファとは何ですか
C言語・C++・C#
-
13
プログラミングが分かりません。
C言語・C++・C#
-
14
C言語の入力した文字を反転させるプログラミングの仕方が分かりません。
Ruby
-
15
C言語初心者 ポインタについて、お助けください、、
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストデータをそのままバイ...
-
問題のあるポインタ変換
-
c言語配列の結合についてです。...
-
atoi( ) の反対をやりたい
-
配列をnビットシフトする
-
型変換
-
charからLPTSTRへの変換方法
-
文字列がNULLか空文字列かの判定
-
secが・・確認お願いできません...
-
c言語strchrのキャスト...
-
strtol関数 自作
-
絶対パスからのファイル名の切...
-
ローマ字変換アルゴリズムを教...
-
strncpyと_tcsncpy_sのヌルの扱...
-
CStringをwchar_tに変換したい
-
_TCHAR*での引数の読み込み
-
const unsigned char *Ptn
-
文字列から空白を取り除きたい...
-
fgetsなどのときのstdinのバッ...
-
<>で囲まれた文字列を文字列の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
文字列から空白を取り除きたい...
-
CStringをwchar_tに変換したい
-
charからLPTSTRへの変換方法
-
テキストデータをそのままバイ...
-
c++ 文字列を入力して、一文字...
-
'const char *' 型は 'char *' ...
-
間接操作のレベルとは
-
WORDをcharに変換する方法
-
strncpyと_tcsncpy_sのヌルの扱...
-
型変換
-
配列をnビットシフトする
-
atoi( ) の反対をやりたい
-
Win32APIでのエディットボック...
-
間接参照のレベルが異なっています
-
c言語配列の結合についてです。...
-
【C言語】テキストファイル内の...
-
double型の値をchar配列に変換...
-
switch文で文字を比較すること...
-
C言語のfor文です。 繰り返しの...
おすすめ情報