2016-10-13 3 views
-1

EDIT:何らかの理由で、新たな問題はstrtok()は非常に奇妙な行動

char * symbolInList = listOfSymbolTokens[0]; 
    char * addressOfSymbol = listOfSymbolTokens[1]; 

    printf("symbolLookingFor: %s\n", symbolLookingFor); 
    printf("symbolInList: %s\n", symbolInList); 
    printf("addressOfSymbol: %s\n", addressOfSymbol); 
    if (strcmp(symbolInList, symbolLookingFor) == 0) { 
     strcpy(tokenAddress, addressOfSymbol); 
     return; 
    } 
    printf("did not enter for loop\n"); 

、strcmpの(symbolinList、symbolLookingFor)は、それらが同じであっても0を返しません。

symbolLookingFor: abc 
symbolInList: abc 
addressOfSymbol: 3011 

did not enter for loop 

それは声明

答えて

1

場合、これはあなたがバッファ内に少なくとも2つの文字を必要とする" "文字列を格納するには

const char sdilem[1] = " "; 

間違って入力していません。 (Cでは、これはエラーではありません。)

まず、あなたは第二に、明示的に

const char sdilem[] = " "; 

サイズを指定する必要はありません、このような間違いを避けるために、あなただけの

const char *sdilem = " "; 
を使用することができ、この場合、
+0

素晴らしいです。 – yanhua

+0

3文字の単語がaまたはbで始まらない場合、なぜ動作しますか? sdilemが十分なメモリを持っていない場合、なぜそれはまったく機能しますか? – yanhua

+0

@yanhua:未定義の動作は未定義です。何でも可能です。それは、単に隣接するメモリのゴミ(またはそれほどゴミではない)内容に依存する可能性があります。 – AnT

関連する問題