私は2つのゼロ終了文字列を結合しなければならないという質問をしています。最初の文字列には単語が含まれ、2番目の文字列は空で2倍のサイズです。私は、だから私はこのC++ゼロ終了文字列を2つ組み合わせる?
#include <stdio.h>
#include <iostream>
using namespace std;
char *copy_and_reverse(char *a) {
char str2[8];
int count = 0;
char* b = str2;
for(a; *a != 0; a++) {
str2[count] = *a;
count++;
}
return b;
}
int main()
{
char str1[] = "test";
char *a;
a = str1;
char* b = copy_and_reverse(a);
for(b; *b != 0; b++) {
cout << *b;
}
}
を試してみました
char *combine(char *a);
次のプロトタイプを持つ関数を使用する必要がありますしかし、私は次のコード
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
char str1[] = "test";
char str2[(sizeof(str1)-1)*2];
char *p;
int count = 0;
for(p = str1; *p != 0; p++) {
str2[count] = *p;
count++;
}
cout << str2;
}
を使用してこの作業を取得することができました。しかしそれはありません(文字列を印刷していますが、それの後にいくつかのランダムな文字が印刷されています)、私はポインタと混乱しています。
編集:ここで私はchar *
スタイルゼロ終端文字列として受け取り、二回の入力の長さをchar*
文字列を返すC++で関数を書く
にお答えしようとしています質問です。返される文字列の前半には、元の配列の内容のコピーが含まれている必要があります。文字列の後半には、元の文字列の内容が逆の順序で含まれている必要があります。
関数は次のプロトタイプを持っている必要があります。
char *copy_and_reverse(char* a);
注意:あなたは任意のライブラリ関数を使うべきではありません(例えば
string.h
から)。
あなたの問題の説明は不明です。 2つのゼロ終端文字列はありません。あなたの最初のコードは 'strcpy'のような文字列をコピーしますが、結果を終了させず、未定義の動作をします。次に、あなたは 'combine'(それが何をするべきか不明)について話しており、最後の例は' copy_and_reverse'を含んでいます(そこには逆もありません)。あなたは質問をしていると言った。どのような運動のテキストですか? – melpomene
'cout'以外は、これは本当にC++ではありません。これはCです。タグを変更する必要があります。 – Charles
@ c650 C++です。うーん、どのような意味で:あなたは 'のstd :: STRING'を持っているとき、C++での'のchar * 'をいじりにはポイントがありません – melpomene