C言語の勉強をしているのですが、文字列を比較

Writer: admin Type: clarksre Date: 2019-01-08 00:00
C言語の勉強をしているのですが、文字列を比較してプログラムを動かすやり方がわかりません。scanfでleftと入力したら左に動くというプログラムを組みたいです。一応全方向を頑張っています。共感した0###以下は、○を上下左右に動かすプログラムです。#include<stdio.h>#include<string.h>int main(){ int i,j; char houkou[10]; char up[10] = "up"; char down[10] = "down"; char left[10] = "left"; char right[10] = "right"; int room[10][10] = { //○が動く範囲 {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0} }; int maru_tate = 5; //○の始めの位置 int maru_yoko = 5; while(1){ for(i=0;i<10;i++){ //○と範囲の描画 for(j=0;j<10;j++){ if(i==maru_tate && j==maru_yoko){ //もし○の位置なら○を描く printf("○"); }else{ //それ以外で switch(room[i][j]){ case 0: //0なら" "(スペース)を描く printf(" "); } } } printf("\n"); } printf("動く方向を入力してください。\n"); scanf("%s",houkou); //入力を読み取り if(strcmp(houkou,up) == 0){ //upなら上にひとつ動く maru_tate -= 1; } if(strcmp(houkou,down) == 0){ //downなら下にひとつ動く maru_tate += 1; } if(strcmp(houkou,left) == 0){ //leftなら左にひとつ動く maru_yoko -= 1; } if(strcmp(houkou,right) == 0){ //rightなら右にひとつ動く maru_yoko += 1; } } return 0;}upと入力すると○が上にひとつ、leftと入力すると○が左にひとつ動きます。先にコメントなさった方がおっしゃっているstrcmp(文字列1、文字列2)は、文字列1と文字列2を比較して、同じなら0を返す関数です。string.hをインクルードして使います。このプログラムを参考に作ってみてください。ナイス0
###左に移動...とかは知りません。文字そのものが動くのか、"hello" が "ello" という風になるやつなのか知らないから。入力値をどうやってチェックするか...なら。-------------方法1: 数字を入力させるこれが一番楽。「1: 左に移動, 2: やめる, 3: 右に移動」みたいな選択肢とかね。これなら int型同士の比較だから、if( ans == 1 )...みたいにできる。でもどうしても文字列なら strcmp関数で比較する。strcmp関数は 対象AとB が同じなら 0 を返す。だから 0 かどうかを調べればいい。ナイス0
###文字列比較ならstring.hのstrncmp()使えばできます。http://www.c-tipsref.com/reference/string.htmlナイス0

 

TAG