gpt4 book ai didi

c - 保存然后打印出 C 中二维数组中的字符串

转载 作者:行者123 更新时间:2023-11-30 18:35:12 25 4
gpt4 key购买 nike

我正在尝试用C编写一个简单的程序来存储数据,然后将其保存到二维数组,二维数组中存储了2个数据。我认为保存代码运行良好,但是当我尝试打印存储在二维数组中的数据时,它崩溃了。

这是我的代码:

#include <stdio.h>
int main(){
char data[2][3];

//input the data then save it in 2d array
printf("enter the first word: ");
scanf("%s", &data[0][0]);
printf("enter the second word: ");
scanf("%s", &data[1][0]);

//here is the problem when iam trying to print out the stored data in 2d array
printf("first word: %s\nsecond word: %s", data[0][0],data[1][0]);
}

最佳答案

您的代码有 3 个问题。

首先,导致代码崩溃的是最终的 printf() 。您传入的 data[0][0] 类型为 char%s它采用 null 终止 string 。最后还需要额外的新行。将其更改为:

printf("first word: %s\nsecond word: %s\n", data[0], data[1]);

其次,数组的第二个维度仅为 3。这意味着您只能存储大小为 3 或更小的字符串。考虑到末尾的空终止符,它只是一个 2 字符数组。将第二个维度更改为更大的数字(即 data[2][50])。

第三,&data[0][0]是多余的。您正在取消引用指针,然后再次使其成为指针。就做data[0]data[1]在你的scanf() .

<小时/>

关于你对二维字符数组的困惑

我认为您对 char arrays 感到困惑是什么 c-strings是。一个char arraychar 的数组。例如,“Bill”将是一个字符数组,其中 'B'将是索引 0, 'l'将是索引 3,和一个空终止符 '\0'将是最后一个索引,告诉机器这是字符串的结尾。

二维字符数组将是这些字符串(例如“Bill”)的数组,例如“Bill”、“Bob”、“Alice”等。如果您不仅想跟踪人们的姓名,还想跟踪他们的姓名,地址、电话等,您可能需要一个 3d 数组。

3d 数组看起来像 data[2][4][50] 。第一级是您想要跟踪的人员。第二层是特定人的属性(姓名、地址等)。第三级是一个字符数组 ( char ),它构成了一个人的属性。

关于c - 保存然后打印出 C 中二维数组中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47420277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com