0

数値と比較する必要がある単純な C コードがあります。しかし、数字は文字の配列です。これらの数値を比較するのにどの方法が速いか 1) strcmp 関数を使用して数値の配列と比較します。2) atoi 関数を使用して各数値文字列を数値に変換し、両方を比較します。

最後に、これらの数値をテキスト ファイルに戻す必要があります。

int main(int argc, char* argv[]){
char nubmer1[] = "12823423";
char number2[] = "12453453";

//compare logic here. and need help with this.

//print to .txt file logic here. i have this with me.
}
4

5 に答える 5

4

「比較」によってそれらが等しくないかどうかだけを知る必要がある場合、それらを整数に変換するには文字列をスキャンし、比較を行う前にいくつかの乗算を行う必要があるため、strcmp が最も高速です。

于 2012-08-03T07:57:51.720 に答える
1

しかし、それは正しくありません。先行ゼロがある場合はどうなりますか?strcmpは一致しませんが、数値に変換すると一致します。

決定する前に、それが重要かどうかを考える必要があります。数値が常に純粋な整数であることが保証されている場合は、先行ゼロを削除してからstrcmpが機能します。

于 2012-08-03T08:03:54.557 に答える
0

strcmpは、両方の数値が等しいかどうかをチェックします。両方の数値が同じ長さでない場合は、より大きいか小さいかはチェックされません。したがって、最初にstrlenを使用してチェックし、長さが等しい場合はstrcmpを使用してチェックします。

于 2012-08-03T08:02:27.677 に答える
0

まず、数値表現の統一された定義済みの形式が必要です。これにより、次のロジックが簡素化されます。

2 つの数値が等しいかどうかを確認するには、strncmp() == 0 を使用することをお勧めします (ただし、セキュリティ上の理由から strcmp は使用しないでください)。

数値が別の数値よりも大きいか小さいかを確認する場合: 1. まず、両方が正か、または両方が負かを確認します。2. 条件 1 が真の場合、文字列の長さを確認します。長さが長い方が明らかに大きいです。それ以外の場合は、-ve 記号がある方が正の数または符号なしの数よりも小さいことを確認します。3. 両方の文字列が同じ長さの場合は、バイトごとに比較して、どちらが大きいか小さいかを調べます。負の数と正の数を比較する場合、論理が異なることに注意してください。-2<-1、ただし+2>+1

設計に基づいて、上記のロジックをさらに最適化できます。

>、<、= などの操作のためにそれらを整数に変換する必要はありません。ただし、非常に大きな数を扱っていて、算術計算を行う必要がある場合を除きます。

于 2012-08-03T08:49:05.557 に答える
-1

私はあなたがこれについて実験をすることができて、テストプログラムを書くことができると思います、あなたにとって素晴らしいことです。

于 2012-08-03T08:18:12.470 に答える