2017-05-07 464 views
-1

我一直在尝试几个小时来尝试做这个工作,但结果总是相同的 - 错误和程序没有响应。C语言:将字符串逐个拷贝到一个数组

此文件表示聊天记录,我从每行中选择用户名。现在我想将它们添加到数组中,以便稍后可以对它们进行计数。

#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?

+0

'strcpy'很好;该错误在您的代码中。 – Olaf

+0

你是否有任何理由在if(line [i-1] ==']')'中检查数组之外? (我从0开始) –

+0

但没有它,它一切正常。 –

回答

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

第一次循环时,i将是零,你会试图访问line[-1]它调用未定义的行为

+0

是的,我知道。但是,当我列出用户名时,他们都以']'开头。 –

+0

我试着写它,我是完全完美的 –

0

线[k]为一个字符类型,而原型为strncpy()函数的功能是:

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

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

strncpy(new_array[i], line+k, 29); 
相关问题