0

私が持っているかどうか言ってください: unsigned char* str = "k0kg"

そして 0 はヌル要素です。for ループを使用してループする場合、配列に null があるかどうかを確認するにはどうすればよいですか?

私も試しました: if (str[1]==0): 私も試しました: if (str[1]=="0"):

そして、それらは機能しませんでした。:(

ループ:

for (i=0;i<num_bytes;i++){
    if (str[i]!=0){
        printf("null spotted\n");
}
4

4 に答える 4

3

C では、定義上、文字列は NUL 文字である '\0' で終了します。そのため、すべての (有効な) 文字列の末尾には '\0' が含まれます。

'\0' の位置を見つけるには、単純に strlen() を使用します。

const char * const end = str + strlen(str);

通常の印刷可能な文字列を扱っている場合、「unsigned char」を使用しているのは奇妙です。バイトを含むメモリ ブロックがあり、最初の 0x00 バイトを見つけたい場合は、メモリの先頭へのポインタとメモリ領域のサイズ (バイト単位) が必要です。次に、memchr() を使用します。

// Where strSize is the number of bytes that str points to.
const unsigned char * const end = memchr(str, 0, strSize);
于 2014-02-07T00:33:14.067 に答える
2

実際に null 要素を探している場合は、次の条件を実行する必要があります。

if(str[i]=='\0')
于 2014-02-07T00:30:12.330 に答える
1

unsigned char* str = "k0kg" を持っているとします。

そして 0 はヌル要素です。for ループを使用してループする場合、配列に null があるかどうかを確認するにはどうすればよいですか?

あなたの専門用語は、C プログラマーを混乱させるでしょう。文字表現と値を混同しています。null 文字 (「null 要素」、これは'\0') を探しているのではなく、文字 を探しています'0'。そう...

int len = strlen(str);
for(int i = 0; i < len; ++i) {
    if(str[i] == '0')
        printf("found it");
}
于 2014-02-07T00:37:13.670 に答える