Atol

atol (ASCII to Long Integer) は、文字列をC言語の長整数型に変換する標準Cライブラリの関数。標準ヘッダーファイル `<stdlib.h>`で宣言されている。読み方は規格では特に定められていない。

## 概要

[編集]

引数として与えられた文字列を解析し、文字列先頭の連続する10進数整数部分を`long`型の整数に変換する。例えば`"123456789"`という文字列を与えると戻り値として`long`型の`123456789L`を返す。また`"123456789abc"`を与えると`123456789L`を返し、`"123456abc789"`を与えると`123456L`を返す。`"abc"`や`""`（空文字列）など変換不可能な文字列の場合、`0L`を返す。

変換された後の数値が`long`の範囲に収まらない（結果が`long`で表現できない）場合、C99やC11の仕様上は未定義動作 (undefined behavior) を引き起こす[1][2]。また、変換に失敗しても`errno`を書き換えないかもしれない。このため、`atol`の使用を禁止しているガイドラインも存在する[3]。

正常に変換可能な文字列の場合は `strtol(s, NULL, 10)` と同じ結果を返す。

## 形式

[編集]

#include <stdlib.h>
long atol(const char *nptr);

## 脚注

[編集]

1. ^ ISO/IEC 9899:1999 / §7.20.1 Numeric conversion functions
2. ^ ISO/IEC 9899:201x Programming languages — C / §7.22.1 Numeric conversion functions
3. ^ INT06-C. 文字列トークンを整数に変換するには strtol() 系の関数を使う

## 関連項目

[編集]

ウィキブックスにC言語関連の解説書・教科書があります。

* atoi
* atof
* itoa

## 外部リンク

[編集]

* `atol(3)` – JM Project Linux Library Functions マニュアル
* atoi, atol, atoll - cppreference.com

* 表
* 話
* 編
* 歴

C言語

* K&R
* ANSI C
* C89
* C90
* C95
* C99
* C11
* C17（英語版）
* C23
* Embedded C（英語版）
* MISRA C

Cの機能|

* 関数
* ヘッダファイル
* 演算子
* 文字列（英語版）
* 文法（英語版）
* プリプロセッサ（英語版）
* データ型（英語版）
* キーワード
* フリースタンディング環境

標準Cライブラリの関数|

* ctype.h（英語版）
* stdio.h
* math.h（英語版）
* stdlib.h（英語版）
* string.h（英語版）
* time.h
* stdarg.h（英語版）
* POSIXライブラリ（英語版）

標準Cライブラリ|

* Bionic（英語版）
* libhybris（英語版）
* dietlibc
* EGLIBC
* glibc
* klibc（英語版）
* マイクロソフトランタイムライブラリ（英語版）
* musl
* Newlib
* uClibc
* BSD libc

コンパイラ|

* ACK（英語版）
* BDS-C
* Clang
* C++ Builder
* gcc
* Intel C++ Compiler
* LCC（英語版）
* LSI C-86
* Pelles C（英語版）
* PCC
* TCC
* Turbo C
* Microsoft Visual C++
* Watcom C/C++（英語版）

統合開発環境|

* Anjuta
* Code::Blocks
* CodeLite
* Eclipse
* Geany
* Microsoft Visual Studio
* Xcode
* NetBeans
* CLion

派生言語|

* C++
* Cg
* Cω
* D言語
* Objective-C
* Alef（英語版）
* Limbo
* Go
* Vala
* SystemC
* Unified Parallel C

関連項目|

* IOCCC

* カテゴリ

この項目は、コンピュータに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています（PJ:コンピュータ/P:コンピュータ）。

|

* 表示
* 編集