Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

strcpy()関数を使わずに文字列をコピーするC言語プログラム

この記事では、strcpy()関数を使用せずに文字列を別の文字列へコピーする方法を解説します。この問題を解決するには、strcpy()と同じ働きをする独自の関数を作成する方法もありますが、ここでは少し工夫をして、別の標準ライブラリ関数を活用して文字列をコピーしてみましょう。

基本的な考え方

ロジックは非常にシンプルです。ここで使用するのはsprintf()関数です。sprintf()は、コンソール画面ではなく文字列(バッファ)に対して値や文字列を出力(書き込み)するための関数です。これがprintf()との唯一の違いです。第1引数には、データを保存したい文字列バッファを指定します。

入力: 文字列「Hello World」を1つ受け取る
出力: その文字列が別の文字列へコピーされ、「Hello World」と表示される

アルゴリズム

  1. 文字列を1つ用意する
  2. 結果を格納するための空の文字列バッファを作成する
  3. sprintf()を使って文字列をコピーする
  4. 終了

サンプルコード

#include<stdio.h>
main() {
    char str[50]; // 別の文字列を格納するための空の文字列
    char *myString = "Program to copy a String";
    sprintf(str, "%s", myString); // sprintfでmyStringからstrへ文字列をコピー
    printf("The String is: %s", str);
}

実行結果

The String is: Program to copy a String

このように、sprintf()のフォーマット指定子「%s」を利用することで、strcpy()を使わなくても簡単に文字列をコピーできます。sprintf()は書式付き出力が可能なため、複数の文字列の結合などにも応用できる便利な関数です。

  1. 【C言語】strncmpライブラリ関数を使って2つの文字列を比較するプログラムの作り方

    strncmpは、C言語のヘッダーファイル「string.h」に定義されている標準ライブラリ関数の一つです。この関数を使用すると、2つの文字列を比較し、どちらの文字列が大きい(辞書順で後ろにある)のかを判定することができます。 strcmp関数(文字列比較) strcmp関数は、2つの文字列を比較するための関数です。戻り値として、両方の文字列の中で最初に一致しなかった文字同士のASCIIコードの差を返します。 構文 int strcmp(string1, string2); 差が0の場合:string1 = string2(2つの文字列は等しい) 差が正の値の場合:string1 &

  2. C言語のstrcpy()関数とは?基本構文と使い方をわかりやすく解説

    C言語のライブラリ関数 char *strcpy(char *dest, const char *src) は、src が指し示す文字列を dest にコピーするための関数です。 C言語では、文字の配列のことを「文字列」と呼びます。 文字列の宣言 文字列(文字配列)の宣言は、以下の形式で行います。 char stringname[size]; 例えば char string[50]; と宣言すると、最大50文字の文字列を格納できる配列が確保されます。 文字列の初期化 文字列の初期化には、主に以下の2つの方法があります。 1. 文字定数を使う方法 char string[10] = {H,