在下面的程序中,我只是尝试将一些字符串复制到数组中并将其打印到另一个函数中。
我得到了分段错误。有人可以指出我做错了什么吗?
#include <stdio.h>
#include <string.h>
#define MAX_STR_LEN 20
void print_str(char str[][],int count);
int main()
{
char str[2][MAX_STR_LEN];
strncpy(str[0],"hello",MAX_STR_LEN);
strncpy(str[1],"world",MAX_STR_LEN);
print_str(str,2);
return 0;
}
void print_str(char str[][],int count)
{
int i;
for(i=0;i<count;i++)
printf("%s\n",str[i]);
}
答案 0 :(得分:3)
在传递 2D数组作为参数时,我们需要指定列 大小 必需。
所以,你应该声明你的函数:
void print_str(char str[][MAX_STR_LEN],int count);
答案 1 :(得分:1)
使用
void print_str(char str[][MAX_STR_LEN], int count);
答案 2 :(得分:1)
始终在C中的二维数组中提供第二个维度长度。如果要声明二维数组,则第一个维度长度是可选的。