我试图将一个随机字符串声明为一个变量,该变量会更改所有东西都可以访问的每次运行,但是我对 C 的了解非常有限。
我尝试研究多个网站并使用教程,但似乎无法正确解释。
// Declare example
#define DEST_SIZE 40
char *randstring(int length) {
char *string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.-#'?!";
size_t stringLen = 26*2+10+7;
char *randomString;
randomString = malloc(sizeof(char) * (length +1));
if (!randomString) {
return (char*)0;
}
unsigned int key = 0;
for (int n = 0;n < length;n++) {
key = rand() % stringLen;
randomString[n] = string[key];
}
randomString[length] = '\0';
return randomString;
}
// char *randomHome = randstring(10);
// char * payloadPath = "~/Desktop/resign_temp_app/";
char dest[DEST_SIZE] = "~/Desktop/AppSign/";
char *randomHome = randstring(10);
char* plx = strcat(dest, randomHome);
char* plx2 = strcat(dest, "/");
const char * payloadPath = dest;
// Function Example
int rmTempAppPath(){
char dest2[DEST_SIZE] = "rm -rf ";
char *command = strcat(dest2, dest);
int status = system(command);
if (status != 0)
{
return -1;
}
return 0;
}
我希望它可以正常工作,但是我收到以下错误和警告消息
resignCore.c:39:20: error: initializer element is not a compile-time constant
char *randomHome = randstring(10);
^~~~~~~~~~~~~~
resignCore.c:41:13: error: initializer element is not a compile-time constant
char* plx = strcat(dest, randomHome);
^~~~~~~~~~~~~~~~~~~~~~~~
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/secure/_string.h:131:3: note:
expanded from macro 'strcat'
__builtin___strcat_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
resignCore.c:42:14: error: initializer element is not a compile-time constant
char* plx2 = strcat(dest, "/");
^~~~~~~~~~~~~~~~~
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/secure/_string.h:131:3: note:
expanded from macro 'strcat'
__builtin___strcat_chk (dest, __VA_ARGS__, __darwin_obsz (dest))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 errors generated.
我很抱歉提供了相当多的代码和错误,但我不太擅长解释。