include stdio h include string h int main

  • Slides: 42
Download presentation

例題2.文字列のコピー #include <stdio. h> #include <string. h> int main() { char s 1[80], s

例題2.文字列のコピー #include <stdio. h> #include <string. h> int main() { char s 1[80], s 2[80]; printf("s 1="); scanf("%s", s 1); strcpy(s 2, s 1); printf("s 1=%s, s 2=%sn", s 1, s 2); return 0; } 17

例題3.文字列の連結 #include <stdio. h> #include <string. h> int main() { char s 1[80], s

例題3.文字列の連結 #include <stdio. h> #include <string. h> int main() { char s 1[80], s 2[80]; printf("s 1="); scanf("%s", s 1); printf("s 2="); scanf("%s", s 2); strcat(s 1, s 2); printf("s 1=%s, s 2=%sn", s 1, s 2); return 0; } 20

#include <stdio. h> #include <string. h> int main() { char s 1[80], s 2[80];

#include <stdio. h> #include <string. h> int main() { char s 1[80], s 2[80]; int n; printf("s 1="); scanf("%s", s 1); printf("s 2="); scanf("%s", s 2); n = strcmp(s 1, s 2); if ( n < 0 ) { printf( "%s<%sn", s 1, s 2 ); } else if ( n == 0 ) { printf( "%s==%sn", s 1, s 2 ); } else if ( n > 0 ) { printf( "%s>%sn", s 1, s 2 ); } return 0; } 23

文字列の比較 実行結果の例(1) s 1=configure s 2=control configure<control 実行結果の例(2) s 1=happy s 2=angry happy>angry 実行結果の例(3)

文字列の比較 実行結果の例(1) s 1=configure s 2=control configure<control 実行結果の例(2) s 1=happy s 2=angry happy>angry 実行結果の例(3) s 1=give s 2=give==give 24

文字列の検索 #include <stdio. h> #include <string. h> int main() NULLの意味 { strstr関数では,検索 char name[80],

文字列の検索 #include <stdio. h> #include <string. h> int main() NULLの意味 { strstr関数では,検索 char name[80], base[80]; 文字列が見つからない char *p, *search; ことを意味する printf("name="); scanf("%s", name); search = name; while( ( p = strstr(search, "\") ) != NULL ) { search = p + 1; } strcpy( base, search ); printf("name=%s, base=%sn", name, base); return 0; 26 }

文字列の検索 実行結果の例 name=a: testfile. txt, base=file. txt 27

文字列の検索 実行結果の例 name=a: testfile. txt, base=file. txt 27

#include <stdio. h> 「%p」はメモリアドレス #include <string. h> void printstring( char* sの表示 ) 「&」はメモリアドレス {

#include <stdio. h> 「%p」はメモリアドレス #include <string. h> void printstring( char* sの表示 ) 「&」はメモリアドレス { の取得 int i; for (i=0; i<strlen(s); i++) { printf("address(%c) = %pn", s[i], &s[i]); } return; } 「s[i]」は i 番目の文字 int main() という意味 { char x[100]; printf("string="); 「%c」は1文字の表示 scanf("%s", x); printstring(x); return 0; } 30

関数呼び出しの流れ main 関数 int main() 関数呼び出し printstring(x); printstring 関数 void printstring( char* s )

関数呼び出しの流れ main 関数 int main() 関数呼び出し printstring(x); printstring 関数 void printstring( char* s ) 戻り return 31

文字列のメモリアドレス 実行結果の例 表示された メモリアドレス address(C) = ffbef 440 address(o) = ffbef 441 address(m) =

文字列のメモリアドレス 実行結果の例 表示された メモリアドレス address(C) = ffbef 440 address(o) = ffbef 441 address(m) = ffbef 442 address(p) = ffbef 443 address(u) = ffbef 444 address(t) = ffbef 445 address(e) = ffbef 446 address(r) = ffbef 447 32

プログラムとデータ メモリ x[0] x[1] x[2] x[3] x[4] x[5] x[6] x[7] x[8] C o m

プログラムとデータ メモリ x[0] x[1] x[2] x[3] x[4] x[5] x[6] x[7] x[8] C o m p u t e r ffbef 441 ffbef 442 ffbef 443 ffbef 444 ffbef 445 ffbef 446 ffbef 447 「文字列の末尾」を 表す特別な文字 (scanf の実行で,自 動的にセットされる) 33

曜日の表示 #include <stdio. h> void print_youbi( int youbi ) { char x[7][4] = {"Sun",

曜日の表示 #include <stdio. h> void print_youbi( int youbi ) { char x[7][4] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; printf( "%sn", x[youbi]); return; } int main() { int n; printf("youbi="); scanf("%d", &n); print_youbi( n ); return 0; } 38

関数呼び出しの流れ main 関数 int main() 関数呼び出し print_youbi(n); print_youbi 関数 void print_youbi( int youbi )

関数呼び出しの流れ main 関数 int main() 関数呼び出し print_youbi(n); print_youbi 関数 void print_youbi( int youbi ) 戻り return 40

プログラムとデータ メモリ printf( "%s", x[youbi]); S M T W T F S u o

プログラムとデータ メモリ printf( "%s", x[youbi]); S M T W T F S u o u e h r a n n e d u i t 41