Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 斯特伦没有';t使用指向数组的指针返回正确的值_C - Fatal编程技术网

C 斯特伦没有';t使用指向数组的指针返回正确的值

C 斯特伦没有';t使用指向数组的指针返回正确的值,c,C,我有以下代码: char* realtor_command[120]; for(int i=0;i<REALTOR_MAX_COMMAND_LENGTH;i++){ realtor_command[i]=malloc(sizeof(120)); } realtor_command[0]="test_string" realtor_command[1]="next_test_string" 在此代码中: char* realtor_command[120]; for(int i=0

我有以下代码:

char* realtor_command[120];
for(int i=0;i<REALTOR_MAX_COMMAND_LENGTH;i++){
    realtor_command[i]=malloc(sizeof(120));
}
realtor_command[0]="test_string"
realtor_command[1]="next_test_string"
在此代码中:

char* realtor_command[120];
for(int i=0;i<REALTOR_MAX_COMMAND_LENGTH;i++){
    realtor_command[i]=malloc(sizeof(120));
}
这也将避免代码中的内存泄漏

请注意,您可能需要确保读取的字符串包含换行符,以确保输入适合您的缓冲区:

if (strstr(input_buffer, "\n") == NULL) {
    // error, input didn't fit in our buffer!
}
在此代码中:

char* realtor_command[120];
for(int i=0;i<REALTOR_MAX_COMMAND_LENGTH;i++){
    realtor_command[i]=malloc(sizeof(120));
}
这也将避免代码中的内存泄漏

请注意,您可能需要确保读取的字符串包含换行符,以确保输入适合您的缓冲区:

if (strstr(input_buffer, "\n") == NULL) {
    // error, input didn't fit in our buffer!
}

请显示如何调用strlen,以及错误的值。什么是
sizeof(120)
??您分配的内存比120字节少得多。这将是sizeof(int),4或8。@JaVaPG您得到了什么结果?正如您所知,此代码应该是(int i=0;i<120;i++){(因为数组是120个字符串)您可能应该做一些与
malloc
不同的事情,因为您正在该循环中泄漏内存。基本上,您正在分配
sizeof(int)
字节的数据(4-8字节),但在循环之后,您正在更改指针以指向新字符串(“test_字符串”),因此您永远不会使用分配的数据。请显示如何调用strlen,以及错误的值。
sizeof(120)
?您分配的内存比120字节少得多。这将是sizeof(int),4或8。@JaVaPG您得到了什么结果?正如您所知,此代码应该是
(int i=0;i<120;i++){
(因为数组是120个字符串),您可能应该做一些与
malloc
不同的事情,因为您正在该循环中泄漏内存。基本上,您正在分配
sizeof(int)
字节的数据(4-8字节),但在循环之后,您将指针更改为指向新字符串(“test_string”),因此您永远不会使用分配的数据。