在C中复制字符串数组时出错

时间:2016-08-27 08:14:49

标签: c arrays string copy runtime-error

我有两个包含字符串的指针数组。第一个从文件中逐行读取并填充。我希望将字符串从第一个复制到第二个但在某些时候进行一些更改。奇怪的是,当我使用代码从文件中删除一个人(某些行)时,在早期函数中使用相同的方法工作....

以下是代码:

date('Ymdhis', strtotime('+5 minutes'))

我也尝试使用这些方法:

void verificare() {
    int nrInt = 0, linieInt = 0;
    system("cls");
    FILE *fisier, *fisier2;
    char buffer[1000];
    char* v[100], w[100], c[100], nume[100];
    char numeFisier[100], rasp[100];
    int i = 0, j = 0, k = 0, k1 = 0, k2 = 0, l = 0, cont = 1, pozVal;

    printf("Enter the name of the file: ");
    scanf("%s", numeFisier);

    fisier = fopen(numeFisier, "rt");


    while(!feof(fisier))
    {
        while(fgets(nume, sizeof nume, fisier))
        {
            v[i] = (char*) malloc(100);
            v[i] = strdup(nume);
            i++;
        }
    }

    //Checking and reviewing the array with some formatting in the console:
    for (j = 0; j < i; j+=4)
    {
        printf("\n");
        printf("Record Nr.: %d \n", cont);
        printf("Name: %s", v[j] );
        printf("Surname: %s", v[j + 1] );
        printf("Age: %s", v[j + 2] );
        printf("\n");
        cont++;
    }

    //Copying the from array1( v[] ) to array2( c[] )

    for (k = 0; k < i; k++)
    {
        c[k] = (char*) malloc(1000);
        strncpy(c[k],v[k],100);
    } // this for loop works in another earlier function ......


}

我真的不明白我哪里弄错了......

1 个答案:

答案 0 :(得分:1)

尝试更改声明:

char *v[100], *w[100], *c[100], *nume[100];

编辑:关键是当你在同一行上声明多个指针时,每个变量都需要一个星号。例如

char *a, *b;

声明两个char指针,而

char *a, b;

将a指定为char指针,但将b指定为char。