質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

751閲覧

C言語 配列 文字指定 for文 終了条件

GASH

総合スコア8

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2017/12/06 06:11

編集2017/12/06 07:11

配列に入力する文字指定と、特定の文字で終了する条件の設定についてお尋ねします。
下記のソースコードに、以下の条件を加えたいです。
①入力できる半角数字は「0」または「1」の2種類のみ。
②文字列の先頭が「S」の場合はループの終了。

アドバイスお待ちしております。


// てすとん.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}

#include <stdio.h>
#include <string.h>

int main(void){

char str1[256]; /* 文字列バッファ /
int slen; /
改行ぬきの長さ /
int nerr; /
エラーカウント /
int i; /
試行回数 */

printf("「0」と「1」のみで構成された16桁の数字を入力してください。\n\n");

for (i = 0; i < 8; i++) {

/指定文字数以内で入力されるまで繰り返す/
do{ nerr = 0;

/*入力案内*/ printf(" データ%d(除改行;半角16字): ", i + 1); /*文字列の読み込み*/ fgets( str1, sizeof(str1), stdin ); *strchr(str1,'\n') = '\0'; /* 含まれた改行を消す */ slen = strlen(str1); /* 未入力時のエラーメッセージ */ if( slen == 0 ){ printf( "文字列がありません!\n" ); nerr=1; } /* 指定文字数以上入力時のエラーメッセージ */ if( slen > 16 ){ printf( "長すぎます!\n" ); nerr = 1; } /* 指定文字数以下入力時のエラーメッセージ */ if( slen < 16 ){ printf( "短すぎます!\n" ); nerr = 1; } /* 再入力のプロンプト(共通メッセージ) */ if( nerr ){ printf( " 半角16文字でお願いします。\n " ); }

}while(nerr);

}

printf(" 入力された文字列は:%s\n ", str1);

return 0;
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

うん、それで何が問題なんですか?

if ( '0'/'1' 以外の文字が見つかった ) とか
if ( 最初の文字が'S' ) とかを表現すりゃいいんじゃねぇの?

であれば、

int not0nor1(const char* str) { str文字列が'0'/'1'以外の文字を含むなら非0 さもなくば 0 を返す }

なんてな関数を書いて
if ( not0nor1(str1) ) って呼べば解決ね♪

投稿2017/12/06 06:23

編集2017/12/06 06:24
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問