如何在字符数组中存储多组字符串

时间:2018-10-26 08:34:24

标签: c

我试图在3D字符数组中存储给定输入数量的字符串集,但不能。 甚至可能使用char数组还是我应该使用其他任何概念,例如数据结构……?

int main()
{
int i,j,T,N[10];
char word[10][10][10];
scanf("%d",&T);/* No of test cases*/      
for(i=0;i<T;i++)
{
    scanf("%d",&N[i]); /*No of strings*/
    for(j=0;j<N[i];j++)
        scanf("%s",word[i][j]); /* reading the strings*/
}
 return 0;

1 个答案:

答案 0 :(得分:1)

首先:在这种情况下,最好将“ 3D字符数组”视为“ 2D字符串矩阵”。

是的,当然,这很有可能。

您的代码中有一些弱点可能会使其崩溃,很难说,因为您没有使用提供的输入数据显示完整的测试用例。

  1. scanf()可能会失败,在这种情况下,您不能依赖具有值的变量
  2. scanf()%s将停在第一个空格字符上,这可能会导致您的扫描代码变得非常混乱
  3. 您不限制要扫描的字符串的大小,而是每个字符串仅提供10个字节的缓冲区空间,因此很容易导致缓冲区溢出。

一个更好的解决方案是检查扫描是否成功,并使每个字符串单独位于一行上,并使用fgets()将整行读取到适当大小的缓冲区中,然后复制您要复制的部分想保留在矩阵中。