0

次のようなC文字列ポインターを取得するにはどうすればよいですか

char *a = "asdf";

となるように変更します。

char *a = "\nasdf\n";
4

5 に答える 5

0

文字列リテラルを変更することはできないため、その新しい形式で 2 番目の文字列を作成する必要があります。

または、書式設定が表示のみの場合は、表示時に書式設定を適用するだけで、新しい文字列の作成を保留できます。例えば:

printf("\n%s\n", a);
于 2013-02-11T07:58:29.557 に答える
0

これがあなたが探していたものかどうかはわかりませんが、文字列を連結したいようです: How do I concatenate const/literal strings in C?

最初と最後の文字列として "\n" を使用し、2 番目の文字列として指定された文字列を使用します。

于 2013-02-11T07:59:14.287 に答える
0

tihs のような文字列を割り当てると

char *a = "asdf";

文字列リテラルを作成しています。したがって、変更することはできません。ここ で説明済み。

于 2013-02-11T07:58:02.350 に答える
0

文字列リテラルへのポインターを使用している場合は、これを行うことはできません。その理由は、文字列リテラルが定数であり、変更できないためです。

あなたができることは、余分な文字を収容するのに十分なスペースを持つ配列を宣言することです。

char a[16] = "asdf";

次にmemmove、文字列を移動したり、新しい文字を手動で追加したりできます。

size_t length = strlen(a);
memmove(&a[1], a, length + 1);  /* +1 to include the terminating '\0' */
a[0] = '\n';           /* Add leading newline */
a[length + 1] = '\n';  /* Add trailing newline */
a[length + 2] = '\0';  /* Add terminator */
于 2013-02-11T08:03:05.127 に答える
-1
char* a = "asdf";
char* aNew = new char[strlen(a) + 2]; //Allocate memory for the modified string
aNew[0] = '\n'; //Prepend the newline character

for(int i = 1; i < strlen(a) + 1; i++) { //Copy info over to the new string 
    aNew[i] = a[i - 1];
}
aNew[strlen(a) + 1] = '\n'; //Append the newline character
a = aNew; //Have a point to the modified string

これがあなたが探していたものであることを願っています。メモリリークを防ぐために、作業が終了したら「delete [] aNew」を呼び出すことを忘れないでください。

于 2013-02-11T08:03:35.097 に答える