C中的Char*功能

use*_*608 2 c

我目前正在尝试使用随机字符串生成器来生成字符串.它看起来像这样:

char *randstring(int length) {

    static char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.-#'?!";        
    char *randomString = NULL;
    int n = 0;
    if (length) {
        randomString = malloc(sizeof(char) * (length +1));

        if (randomString) {            
            for (n = 0;n < length;n++) {            
                int key = rand() % (int)(sizeof(charset) -1);
                randomString[n] = charset[key];
            }

            randomString[length] = '\0';
        }
    }
    return randomString;
}
Run Code Online (Sandbox Code Playgroud)

我想这样称呼它:

srand(time(NULL));
int r = rand()%1000;
char *string[1000];
&string = randomstring(r);
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我收到以下错误:

error: invalid lvalue in assignment. 
Run Code Online (Sandbox Code Playgroud)

我看过网上但我无法弄清楚为什么这不起作用.有什么建议?我假设它与指针有关.

Bil*_*nch 6

最有可能的是,正确的代码是:

char *string = randomstring(52);
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因你想保留字符指针数组,你也可以这样做:

char *string[1000];
string[0] = randomstring(102);
Run Code Online (Sandbox Code Playgroud)

  • @ user081608,您在使用之前是否提供了`randomstring`的声明?如果没有,编译器假定`int`为返回类型. (2认同)