This question already has answers here:
Why can't we use double pointer to represent two dimensional arrays?
                                
                                    (5个答案)
                                
                        
                        
                            Multi-dimensional array and pointer to pointers
                                
                                    (2个答案)
                                
                        
                                2年前关闭。
            
                    
我想初始化一个字符串数组,每个位置都具有相同的值。所以我正在尝试这段代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define TAM_VETOR 1009
#define QTD_PLACAS 1000

void inicializaVet(char * v[], int tamVet) {
    int i;
    for (i = 0; i < tamVet; i++) {
        printf("rodou %d\n", i);
        strcpy(v[i], "vazio");
    }
}

int main(void) {
    char vetor[TAM_VETOR][8];

    inicializaVet(vetor,TAM_VETOR);

    return 0;
}


它不起作用,甚至无法复制到第一个位置。 (打印“ rodou 0”然后中断)

geraArquivo()正在工作。

我试图将相同的代码放在main函数下,并且它起作用了,我想我的错误在于“ inicializaVet”参数的类型吗?但是我无法自行解决。

最佳答案

gcc -W -Wall提供警告:


  tmp-test.c:7:27:注意:预期为'char **',但参数的类型为'char(*)[8]'


您可以将数组传递为

void inicializaVet(char  v[TAM_VETOR][8], int tamVet)


或作为

void inicializaVet(char  v[][8], int tamVet)

关于c - C strcpy()在函数内部但不在main()上时中断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53094439/

10-10 18:52