gpt4 book ai didi

c# - string[,] C 中等效的字符串数组数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:02:02 26 4
gpt4 key购买 nike

在 C# 中,如果我要创建一个字符串数组,这很容易:

string[,] array = new string[50,7];

我将如何在 C 中执行此操作?我明白我应该使用指针,但我想出的东西似乎不能正常工作。

char *array[50][7];

请注意,我不想将元素设置为常量值,我需要能够通过使用 scanf() 再次访问它们/在程序中设置它们功能或简单地使用 = 如果可能的话。实现这一目标的最简单方法是什么?

编辑:我在这里做错了什么吗?以下非常简单的示例使程序崩溃:

char *username;

printf("Username: ");
scanf("%s", &username);

array[0][0] = malloc(strlen(username) + 1);
strcpy(array[0][0], username);

事实上,我已经添加了对 stdlib.h

的引用

最佳答案

没有简单的方法 :) 因为 C 没有高级字符串类,至少在不调用一些非标准库的情况下是这样。

为了灵活,您确实需要一个二维指针数组 char *array[50][7]; ,其中每个指针都设置为指向实际的字符串。创建字符串后,您必须使用 malloc() 分配足够的内存来保存它以及空终止符。例如:

array[x][y] = malloc(strlen(the_string) + 1);
assert(array[x][y] != NULL);

= 在 C 中复制字符串是不可能的赋值运算符,因此在分配内存后,您必须使用 strcpy 将字符串复制到分配的内存区域中.

strcpy(array[x][y], the_string);

关于c# - string[,] C 中等效的字符串数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34658976/

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