【发布时间】:2022-06-16 22:53:45
【问题描述】:
我正在尝试将一维字符串数组复制到 C 中的二维字符串数组中。
我能够用整数实现这一点 enter image description here
//Here is what I tried for integers.
int main()
{
int arr[3][3];
int arr2[9]={1,2,3,4,5,6,7,8,9};
int i,j,k=0;
for(i=0; i<3;i++){
for(j=0; j<3;i++){
arr[j][i] = arr2[i];
//rintf(\"%d\\n\",arr2[i]);
}
}
for(i=0; i<3; i++) {
for(j=0; j<3; j++)
printf(\"%2d \", arr[j][i]);
printf(\"\\n\");
}
return 0;
}
我将数据更改为 char 并尝试运行相同的代码,但出现分段错误。 这是我迄今为止尝试过的,但没有奏效。错误:分段错误(核心转储)
#include<stdio.h>
#include<string.h>
int main()
{
char *d[3][3]; // Destination array
char *s[9]={\"orange\",\"apple\",\"table\",\"chair\",\"cable\",\"TV\", \"124\",\"HI\"}; // Source 1 Day array
int i,j,k=0;
for(i=0; i<3;i++){
for(j=0; j<3;i++){
strcpy(d[j][i], s[i]);
}
}
for(i=0; i<3; i++) {
for(j=0; j<3; j++)
printf(\"%s \", d[j][i]);
printf(\"\\n\");
}
return 0;
}
我做了一些调整,现在它打印了一些奇怪的字符串
#include<stdio.h>
#include<string.h>
int main() {
char d[3][3] ={0}; // Destination array
char s[9][8]={\"orange\",\"apple\",\"table\",\"chair\",\"cable\",\"TV\", \"124\",\"HI\"}; // Source 1 Day array
int i,j,k=0;
for(i=0; i<3;i++){
for(j=0; j<3;j++){
d[j][i] = *s[i];
}
}
for(i=0; i<3; i++) {
for(j=0; j<3; j++)
printf(\"%s \", &d[j][i]);
printf(\"\\n\");
}
return 0;
}
-
在
for(j=0; j<3;i++){行中,我相信i++应该是j++。否则,循环将永远不会结束。 -
在您的第一个代码中,
arr[j][i] = arr2[i]应该类似于arr[j][i] = arr2[i*3+j] -
在您的第二个代码中,您没有为
s中的char*元素分配空间。 -
您是否尝试过在调试器中逐行运行代码,同时监视所有变量的值,以确定您的程序在哪一行停止按预期运行?如果您没有尝试过,那么您可能想阅读以下内容:What is a debugger and how can it help me diagnose problems? 您可能还想阅读以下内容:How to debug small programs?
-
请删除输入和输出的图像并复制粘贴实际文本。
标签: arrays c gcc multidimensional-array c-strings