簡體   English   中英

有什么方法可以將字符串的長度應用於 C 語言中的數組的大小?

[英]Is there any way to apply a length of a string to a size of an array in C language?

我有一個字符串x和一個數組x_integer 字符串x的長度為8 ,但是當我使用長度初始化數組int x_integer[strlen(x)] = {0} ,它不允許我這樣做,因為它需要常量值。 那么無論如何我可以獲取字符串x的長度並將其用於數組,除了使用#define SIZE 8導致我的字符串每次都更改。

無法初始化 VLA。

首先在定義內的下標運算符內使用strlen

int x_integer[strlen(x)];

然后,如果需要,您需要自行初始化x_integer每個元素:

int len_x = strlen(x);
for ( int i = 0; i < len_x; i++ )
{
    x_integer[i] = 0;
}

測試代碼(在線示例):

#include <stdio.h> 
//#include <stdlib.h> 
#include <string.h> 

int main (void) 
{  
    const char *x = "Hello"; 
    int x_integer[strlen(x)];

    int len_x = strlen(x);
    for ( int i = 0; i < len_x; i++ )
    {
        x_integer[i] = 0;
    }

    for ( int i = 0; i < len_x; i++ )
    {
        printf("%d\n", x_integer[i]);
    }   

    return 0;
}

執行:

./a.out
0
0
0
0
0

C 中無法初始化自定義/可變長度數組。

但是你總是可以使用malloc()calloc()來分配請求的內存。

對於您的用例, calloc()最適合,因為它將分配的內存設置為0

另外,在執行操作后,不要忘記進行適當的內存管理。

看看下面的實現:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){

    char* x = "test string";

    int* x_integer = (int*)calloc(strlen(x), sizeof(int));

    //Perform operation

    //Memory management
    free(x_integer);

    return 0;
}

暫無
暫無

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

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