配列を使った文字列操作関数について

C

C言語に標準搭載されている文字列操作関数を検証してみる。

まず、文字列操作関数を使う場合には、これまでプログラムの先頭に必ず書いていた「#include 」という記述に加え、次のような記述をする。

#include <string.h>

文字列操作関数をいくつか試してみる。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
   
int main(void)
{
    //配列と変数を宣言
    char s[4] = "ABC";
    int len;
      
    //■文字数を取得する
    len = strlen(s);
  
    printf("文字列の長さは%fである\n", len); //結果「文字列の長さは0.000000である」
    printf("文字列の長さは%dである\n", len); //結果「文字列の長さは3である」
      
    //■文字列コピー
    char ss[6];
    strcpy(ss, "world");
    printf("文字列は%dです\n", ss); //結果「文字列は1245010です」と出てしまう。。。
    
    //■文字列連結
    char d[6] = "AAA";
    char e[]  = "de";
    
    printf("\n\n%s\n\n", strcat(d, e));
    
    //■文字列比較
    char g[] = "AAA";
    char h[] = "ABBD";
    
    int cc = strcmp(g, h);
    printf("\n\n%d\n\n", cc); //結果「-1」と表示される
    
    //■数値などを文字列に変換する
    char ss[40];
    sprintf(ss, "%f", 143.5);
    printf("変換した結果、%dです\n\n", ss); //結果「変換した結果、1638164です」と表示される(これは正しいのか)
    
    //■文字列を数値に変換する
    char sss[] = "340";
    int nnn = atoi(sss);
    printf("変換した結果、%dです\n\n", nnn); //結果「変換した結果、340です」 と表示される
    
    
    
    
    
    
}



strcpyした直後の値が「文字列は1245010です」と出てしまう現象がわからない。なぜだ。

↓。自己解決しました。printf内での出力指定方法が「%d」だった為です。
%sにすることで文字列として出力することを検証した。

    printf("文字列は%sです\n", ss); //結果「文字列はworldです」と出た

型に迷ってしまう場合は、一旦こちら(http://propanmode.net/blog/?p=208)を確認すること。
↑の記事はもっと加筆する。

文字列変換系関数の検証

数値などを文字列に変換する関数。
sprintf()

文字列を数値に変化する関数。実行するには「#include 」の読み込みが必要。←実際には記述しなくてもatoi関数は動作した。
atoi()

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です