Cで文字を文字列に変換するにはどうすればよいですか。現在、文字を返すc = fgetc(fp)
を使用しています。しかし、strcpyで使用する文字列が必要です
他に読みすぎずに質問に答えるには
char str[2] = "\0"; /* gives {\0, \0} */
str[0] = fgetc(fp);
文字列としてcharを使用し続ける他の文字列操作でループの2行目を使用できます。
fgetc(fp)
を使用してstrcpy(buffer,c);
を呼び出すことだけが正しくないと思われます。
このバッファを自分で簡単に構築できます。
char buffer[MAX_SIZE_OF_MY_BUFFER];
int i = 0;
char ch;
while (i < MAX_SIZE_OF_MY_BUFFER - 1 && (ch = fgetc(fp)) != EOF) {
buffer[i++] = ch;
}
buffer[i] = '\0'; // terminating character
これは、MAX_SIZE_OF_MY_BUFFER
文字よりも少ない文字を読むという事実に依存していることに注意してください。
与えられた答えの多くを実行できますが、strcpy
で使用できるようにしたい場合は、以下を実行できます。
...
strcpy( ... , (char[2]) { (char) c, '\0' } );
...
(char[2]) { (char) c, '\0' }
partは、文字c
から一時的にnullで終わる文字列を生成します。
この方法では、1文字の文字列が1回だけ必要であれば、既に手元にあるものに対して新しい変数を作成することを避けることができます。
これを使用してcharを文字列に変換します(例)。
char c = 'A';
char str1[2] = {c , '\0'};
char str2[5] = "";
strcpy(str2,str1);
そのようなコードは動作するはずです:
int i = 0;
char string[256], c;
while(i < 256 - 1 && (c = fgetc(fp) != EOF)) //Keep space for the final \0
{
string[i++] = c;
}
string[i] = '\0';
動作する例は次のとおりです。
printf("-%s-", (char[2]){'A', 0});
これにより、-A-
//example
char character;//to be scanned
char merge[2];// this is just temporary array to merge with
merge[0] = character;
merge[1] = '\0';
//now you have changed it into a string
これは古い質問ですが、OPの質問に実際に当てはまる答えはありません。彼がしたい/必要なのはこれだけです:
_char c = std::fgetc(fp);
std::strcpy(buffer, &c);
_
ここで関連する側面は、という事実です。 strcpy()
char配列/ c-stringである必要はありません。実際、どの引数もcharまたはchar配列ではありません。これらは両方ともcharポインターです。
_strcpy(char* dest, const char* src);
_
dest :
_ 非const charポインターsrc :
_ const charポインター\0
_ 残りの要素内(で始まる src
)、コピーする必要のあるc-stringの終わりをマークします。参考までに、Cにはstringデータ型がありません。文字の配列を使用して値を保存し、操作します。変数cを文字の配列に変更し、ループ内で使用して値を取得します。
char c[10];
int i=0;
while(i!=10)
{
c[i]=fgetc(fp);
i++;
}
もう1つの方法は、ポインターを使用してメモリを動的に割り当て、値を割り当てることです。