構造体のメンバ変数にchar型の配列を格納した後、strcpy関数を用いてコマンドプロンプト画面に🍓文字列🍓をprintf出力表示してみよう

ソーラー「おおっと忘れてた(^_^)/


構造体をもちいて文字列データをコマンドプロンプト画面にprintf出力表示してみよう。


#include <stdio.h>

#include <string.h>


typedef struct Cube

{

char str[100];

int no;

float tate;

float yoko;

float takasa;


} Cube;


int main(void) {


Cube cube1;

strcpy_s(cube1.str,"りっぽ~たーい、その1");

cube1.no = 1;

cube1.tate = 4.0;

cube1.yoko = 5.0;

cube1.takasa = 6.0;


printf("%s\n", cube1.str);

printf("%d\n", cube1.no);

printf("%f\n", cube1.tate);

printf("%f\n", cube1.yoko);

printf("%f\n", cube1.takasa);


return 0;

}


コンパイル結果

りっぽ~たい、その1

1

4.000000

5.000000

6.000000


ソーラー

「このプログラムでは


再び

             

          strcpy_s関数


が登場します。



まず文字列データ"りっぽ~たーい、その1"を格納するために


char型の配列宣言


char str[100];

構造体Cubeの定義に記述し


char型の配列 strを


構造体のメンバ変数にしています


char str[100];と記述することにより


文字99文字と文字列であることを表すためのナル文字\0合わせて100文字分


char型の配列strに格納することができます


文字列を構造体を用いてprintf出力表示するには


strcpy_s関数をもちいます


strcpy_s関数は統合開発環境Visual studio専用の関数となっており


他の統合開発環境ではお使いになれません


他の統合開発環境をお使いの方は


strcpy_s関数の代わりにstrcpy関数をお使いください。


またstrcpy関数はそのままでは


統合開発環境Visual studioでは使用できませんので


プログラムの冒頭で


#pragma warning(disable: 4996)を記述してください


strcpy_s関数

または

strcpy関数


を使用するには


プログラムの冒頭で


ヘッダファイル<string.h>をインクルードします


そして

strcpy_s(cube1.str,"りっぽ~たーい、その1");


と記述し


配列宣言

char str[100];


で作製された配列strに


文字列データ


"りっぽ~たーい、その1"


を格納します


このときの


配列strは


構造体Cubeのメンバ変数であり


cube1.strは


構造体変数cube1のメンバ変数となっています。


そして


printf("%s\n", cube1.str);


をおこなうことにより


配列strに格納されている文字列データ


"りっぽ~たーい、その1"



%s出力変換指定子を通して


りっぽ~たーい、その1


とコマンドプロンプト画面に表示されます。」


アレサ「

#include <stdio.h>

#include <string.h>


typedef struct Cube

{

char str[100];

int no;

float tate;

float yoko;

float takasa;


} Cube;


int main(void) {


Cube cube1;

cube1.str="りっぽ~たーい、その1";

//ここです👆

cube1.no = 1;

cube1.tate = 4.0;

cube1.yoko = 5.0;

cube1.takasa = 6.0;


printf("%s\n", cube1.str);

printf("%d\n", cube1.no);

printf("%f\n", cube1.tate);

printf("%f\n", cube1.yoko);

printf("%f\n", cube1.takasa);


return 0;

}


アレサ「


strcpy_s(cube1.str,"りっぽ~たーい、その1");

の部分を


strcpy_s関数を使わずに


cube1.str="りっぽ~たーい、その1";


と記述しても


ビルドエラー


エラー C3863 配列型 'char [100]' を割り当てることはできません。

エラー (アクティブ) E0137 式は変更可能な左辺値である必要があります


が表示されてしまいますの。」


ソーラー「文字列データを構造体をつかってprintf出力表示するには


strcpy_s関数を使う必要があるんだね。」」




  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます