2017-12-01 14 views
0

私は英語初心者ではありませんので、私の無知を言い訳してください。私の宿題は、Cでchar文字列の要素を比較する関数を作成することです。この関数は後でmain()で呼び出され、具体的な文字列で動作するはずです。しかし、これらの文字列は各エントリごとに異なるサイズを持つ可能性があるため、関数のサイズを定義する意味はありません。私は各文字列のサイズを知る必要があります。そうでなければ、私のプログラムはいつ停止するかを知らないでしょう。どのように達成するのですか?私の最初の考えはsizeof()関数を使うことです。それはうまくいくのでしょうか、それとももっと複雑な解決策ですか?すべての回答ありがとう!Cの関数で、未定義の文字列サイズを扱うにはどうすればよいですか?

+0

などの文字列の長さを計算するための独自の関数を書くことができます

は、このコードを理解するようにしてください。 html –

+2

'c'文字列は' NUL'文字 ''\ 0''で終わるので、既存の文字列関数はすべてその事実から動作します。例えば、['strlen'](https://linux.die.net/man/3/strlen)は、文字列をループし、' '\ 0''が見つかるまで見える文字ごとにカウントをインクリメントします。それは停止し、カウントは長さです。 – yano

+0

前のメッセージで私があなたに示すのは、C関数strcmpのコードです。 –

答えて

0

sizeof演算子は、char型の記憶単位の数で測定されたデータ型または変数のサイズを評価するために使用されます。 文字列の長さの評価には役に立ちません。

この目的のために、Cライブラリ(string.h)のstrlen()関数を使用することができます。 strlen()はnullを含まない文字列の長さを返します。 https://code.woboq.org/userspace/glibc/string/strcmp.c:あなたがまた続く

int stringlen(char str[]) 
{ 
    int len=0; 
    while(str[i] != '\0') 
    { 
    len++; 
    } 
    return len; 
} 
関連する問題