No.6ベストアンサー
- 回答日時:
#2 補足
>他の文字で構成された文字列の場合は終了させたいです。
他の文字が「現れた時点」で関数を終了、としてみました。
ソースの例では、「小数点」で処理を終了し、それまでの数を戻り値としています。
#3 補足
>基礎的な学習量のみでコーディングできる範囲なんだと思います。
・ for 文のインクリメントで次の文字を処理
・「ポインタ」のインクリメントで次の文字を処理(未習?)
2つ作ってみました。
#4 補足
>変換の仕方が考え付かない感じですね。。
876 = 8 * 100 + 7 * 10 + 6 としたいところですが、いつ「他の文字」が現れるか不明ですので、まだ数字が続く、と判った時点で * 10 (◆)しています。
まず、0 + 8
次が、7 と判明した時点で、8 * 10。そして 80 + 7
次に、6 と判明した時点で、87 * 10。そして 870 + 6
次に、「他の文字」なので、それまでの数 876 で終了。
http://e-words.jp/p/r-ascii.html
#include <stdio.h>
int toPlusIntegerP( char *cStr )
{
int iRet = 0, iChk;
while( *cStr ){
iChk = *cStr++ - '0'; // 文字から数値へ
if( iChk < 0 ) return( iRet );
if( iChk > 9 ) return( iRet );
iRet *= 10; // 桁上げ ◆
iRet += iChk;
}
return( iRet );
}
int toPlusIntegerF( char cStr[] )
{
int iRet = 0, i, i1;
for( i = 0; ( cStr[ i ] >= '0' ) && ( cStr[ i ] <= '9' ); i++ ){
i1 = cStr[ i ] - '0'; // 文字から数値へ
iRet *= 10; // 桁上げ ◆
iRet += i1;
}
return( iRet );
}
int main( void )
{
char cStr[ 8 ] = "876.543";
printf( "%d\n", toPlusIntegerP( cStr ) );
printf( "%d\n", toPlusIntegerF( cStr ) );
return( 0 );
}
注:インデントに全角空白を用いています。コピペ後、タブに一括変換して下さい。
No.4
- 回答日時:
> まだ多様なことは習ってませんし
条件をいろいろ後出しされても困ります。
> <stdio.h>と基礎的な学習量のみでコーディングできる範囲なんだと思います。
基礎的な学習量をこなしたのにコーディングできないから質問しているのではないのですか?
この回答への補足
確かにそこは言ってませんでしたが、質問内容から低レベルな質問かなと思ってたんでつい。。
言っておくべきでしたね。すいません↓
いや、僕がその学習をこなせてないからなんですよ↓
変換の仕方が考え付かない感じですね。。
No.3
- 回答日時:
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h>
int string_to_integer(const char *s)
{
if (s == NULL || s[0] == '\0') abort();
if (s[strspn(s, "0123456789")] != '\0') abort();
errno = 0;
long result = strtol(s, NULL, 10);
if (errno != 0 || result < INT_MIN || INT_MAX < result) abort();
return (int)result;
}
仕様が不明な部分は勝手に解釈しました。
この回答への補足
ちょっとこれは理解不能ですね。。w
まだ多様なことは習ってませんし<stdio.h>と基礎的な学習量のみでコーディングできる範囲なんだと思います。
回答ありがとうございます!
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
Win32APIでのエディットボック...
-
charからLPTSTRへの変換方法
-
間接操作のレベルとは
-
double型の値をchar配列に変換...
-
構造体のアライメント調整
-
C言語 バイナリファイルをfloa...
-
【C言語】構造体内の領域解放(...
-
str系関数を使わずに二つの文字...
-
switch文で文字を比較すること...
-
pingの結果を取得する方法
-
絶対パスからのファイル名の切...
-
charでの計算?
-
バイナリファイルをコピーする...
-
配列をnビットシフトする
-
干支のプログラム
-
C言語の入力した文字を反転させ...
-
”あいうえお” を ”おえういあ...
-
Linuxでフォルダ内全ファイル名...
-
DLL内に定義されている関数名の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
CStringをwchar_tに変換したい
-
charでの計算?
-
文字列から空白を取り除きたい...
-
charからLPTSTRへの変換方法
-
'const char *' 型は 'char *' ...
-
テキストデータをそのままバイ...
-
配列をnビットシフトする
-
半角カナ→16進
-
double型の値をchar配列に変換...
-
sprintfに同じ変数は使えるか
-
ファイル名である文字列からbas...
-
ネットワークにつながっている...
-
ftoa の作り方
-
間接操作のレベルとは
-
型変換
-
C言語です
-
C言語のfor文です。 繰り返しの...
-
Win32APIでのエディットボック...
-
【C言語】文字型と整数型の違い
おすすめ情報