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

时间:2017-05-07 20:17:29

标签: 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]; 
    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?

2 个答案:

答案 0 :(得分:0)

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

第一次循环,i将为零,您将尝试访问line[-1],这会调用未定义的行为

答案 1 :(得分:0)

line [k]是char类型,而strncpy函数的原型是:

char *strncpy(char *dest, const char *src, size_t n)

你应该尝试编辑你的代码:

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