簡體   English   中英

如何從char *獲取字符串的值而不是地址

[英]How to get the value of a string from char* not the address

我想比較模式。 所以我有將模式保存為字符串的結構,但是我希望能夠構建一個字符串並將該字符串的VALUE存儲在結構中。 目前,我只是復制我的字符串的地址。

typedef struct
{
    int emp;
    char *context;
    int numOnes;
    int numZeros;


}Pattern;

    char *patt, str[t+1];
    patt = str;
    while(count<t){
        //printf("Stream: %d\n", stream[end]);
        if(stream[end] == 1){
            patt[count]= '1';
            //writeBit(1);
        }
        else{
            patt[count]='0';
            //writeBit(0);
        }


        end--;
        count++;
    }
    patt[count]=0;//building string


    if(found == 0){//if pattern doesnt exist, add it in

        patterns[patternsIndex].context = patt; //NEED HELP HERE. This copies the address not the actual value, which is what i need

        patterns[patternsIndex].emp = 1; 
        prediction = 0;
        checkPredict(prediction,stream[end],patternsIndex);
        patternsIndex++;

        found =1;
} 

如果你的意思是你想取字符串“14”並使它成為一個值為14的數字,那么看看atoi標准函數。

為了避免使Pattern.context成為一個固定大小的數組,並確保有足夠的空間可以復制到你需要為Pattern.context動態分配內存來存儲patt的副本。 或者:

  • 使用malloc() (記住為null終止符分配strlen(patt) + 1 )和strcpy()

     patterns[patternsIndex].context = malloc(strlen(patt) + 1); if (patterns[patternsIndex].context) { strcpy(patterns[patternsIndex].context, patt); } 
  • 使用strdup()

     patterns[patternsIndex].context = strdup(patt); 

在任何一種情況下,請記住在不再需要時free()字符串副本:

free(patterns[patternsIndex].context);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM