C 言語チュートリアル: 数値を 1 行ずつ読み取る方法

C 言語チュートリアル: 数値を 1 行ずつ読み取る方法

C 言語プログラミング開発では、文字列やテキスト ファイルを処理し、それらから数値を抽出することが必要になることがよくあります。この記事では、初心者が数字をよりよく理解して使用できるように、数字を1行ずつ読み取る方法を紹介します。

C言語で数値を一行ずつ読む方法

I.はじめに

数値はコンピュータ プログラミングにおいて重要な役割を果たし、幅広いアプリケーションで使用されます。文字列やテキスト ファイルを処理する場合は、数値を抽出して計算などの操作を実行する必要があります。数値を 1 行ずつ読むのは一般的なニーズであり、それを実現するためのいくつかの方法を紹介します。

2. sscanf関数を使用する

sscanf 関数は、C 言語で一般的に使用される文字列書式設定関数であり、その機能は、指定された形式で文字列からデータを抽出できる scanf 関数に似ています。数値を行ごとに読み取るには、sscanf と fgets 関数を使用できます。

#含む

int main() {

文字行[100];

FILE *file = fopen(\data.txt\ \r\

while (fgets(line, sizeof(line), file)) {

int かどうか;

if (sscanf(line, \d\ &num) == 1) {

printf(\読み取り番号: %d\

\番号);

}

}

fclose(ファイル);

0を返します。

}

上記のコードでは、data.txt という名前のテキスト ファイルを開き、fgets 関数を使用してファイルの内容を 1 行ずつ読み取り、行文字配列に格納します。次に、sscanf 関数を使用して行内の数値を抽出し、num 変数に格納します。抽出が成功した場合は、それに対する後続の操作を続行できます。

3. strtol関数を使用する

strtol関数はC言語の文字列から整数への変換関数であり、強力な機能を持っています。strtol 関数を使用すると、数値を 1 行ずつ読み取り、エラーを処理できます。

#含む

#含む

int main() {

文字行[100];

FILE *file = fopen(\data.txt\ \r\

while (fgets(line, sizeof(line), file)) {

char *endptr;

long num = strtol(line, &endptr, 10);

if (行 != endptr) {

printf(\読み取り番号: %ld\

\番号);

}

}

fclose(ファイル);

0を返します。

}

上記のコードでは、strtol 関数の最初のパラメーターは変換される文字列で、2 番目のパラメーターは文字列の末尾へのポインターであり、関数が呼び出された後の変換された文字列の次の文字を指します。3 番目のパラメータは基数で、ここでは 10 進数です。endptr が line と等しいかどうかで、変換が成功したかどうかを判断できます。

4. 正規表現を使用する

正規表現は強力なパターン マッチング ツールです。C 言語では、正規表現のサポートは regex.h ヘッダー ファイルを通じて提供されます。正規表現を使用すると、数値を行ごとに照合して抽出できます。

#含む

#含む

int main() {

文字行[100];

FILE *file = fopen(\data.txt\ \r\ regex_t 正規表現;

regcomp(®ex, \0-9]+\ REG_EXTENDED);

while (fgets(line, sizeof(line), file)) {

regmatch_t 一致;

if (regexec(®ex, line, 1, &match, 0) == 0) {

int start = match.rm_so;

int 終了 = match.rm_eo;

char num[終了 - 開始 + 1];

strncpy(数値, 行 + 開始, 終了 - 開始);

数値[終了 - 開始] = '\0';

printf(\読み取り番号: %s\

\番号);

}

}

regfree(®ex);

fclose(ファイル);

0を返します。

}

上記のコードでは、まず regcomp 関数を使用して正規表現をコンパイルし、次にループ内で regexec 関数を使用して照合を実行します。一致が成功した場合は、regmatch_t 構造体の rm_so メンバーと rm_eo メンバーを通じて一致の開始位置と終了位置を取得し、番号を抽出できます。

5. まとめ

C 言語プログラミングでは数値を 1 行ずつ読み取ることが一般的ですが、この記事ではこの機能を実現するためのいくつかの方法を紹介します。sscanf 関数、strtol 関数、または正規表現を使用して、数値を簡単に抽出し、後続の操作を実行します。この記事が、C 言語で数値を 1 行ずつ読み取る方法をより深く理解し、実際のプロジェクトで柔軟に活用できるようになることを願っています。
コードの一部は https://www.ktiao.com/c/2023-08/254255.html から転送されています。

おすすめ

転載: blog.csdn.net/qq_42151074/article/details/132271105