Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.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语言:将字符串逐个复制到数组_C_Arrays_String_Copy - Fatal编程技术网

C语言:将字符串逐个复制到数组

C语言:将字符串逐个复制到数组,c,arrays,string,copy,C,Arrays,String,Copy,我已经尝试了几个小时,试图使这项工作,但结果总是相同的错误和程序没有响应 这个文件代表聊天历史,我从每一行中选择用户名。现在我想将它们添加到一个数组中,以便稍后可以对它们进行计数 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char* argv[]) { char const* const fileName = argv[1];

我已经尝试了几个小时,试图使这项工作,但结果总是相同的错误和程序没有响应

这个文件代表聊天历史,我从每一行中选择用户名。现在我想将它们添加到一个数组中,以便稍后可以对它们进行计数

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

int main(int argc, char* argv[])
{
    char const* const fileName = argv[1]; 
    FILE* file = fopen("beispielhafteGeschichte3", "r"); 
    char line[256];

    int i, j, k;
    char new_array[15][30];


    while (fgets(line, sizeof(line), file)) 
    {
     for (i=0; i<strlen(line); i++)
     {
        if (line[i-1]==']')
           {
             for(k=i; k<strlen(line); k++)
                {
                 printf("%c", line[k]);
                 if (line[k+1]==':') break;
                }
             strncpy(new_array[i], line[k], 29);  // ?????  
             printf("\n");
           }
     }
    }

    fclose(file);

    return 0;
}
如何修复strncpy

for (i=0; i<strlen(line); i++)
{
    if (line[i-1]==']')

第一次通过循环时,我将为零,您将尝试访问调用未定义行为的第[-1]行。第[k]行是字符类型,而strncpy函数的原型是:

char *strncpy(char *dest, const char *src, size_t n)
您应该尝试如下方式编辑代码:

strncpy(new_array[i], line+k, 29);

strcpy很好;错误在您的代码中。是否有任何原因导致您在if行[i-1]=']'中检查数组外部?我从0开始,但没有它,一切都很好。是的,我知道。但是当我列出用户名时,它们都是以“]”开头的。我试着写它i-1,它非常完美