好的,我是一名Java程序员,我有一个课程作业(在C中)要求我做以下工作:
"创建包含一个索引的单维数组, 它将包含一个带有您全名的字符串"
所以我知道C中的字符串只是字符数组,但我不明白我应该如何在一个字符串索引中包含整个字符串?
char name[1] ; //initializing to 1 index
name[0] = “David Baez” ; // setting that one index "0" to my name
你会如何正确地解决这个问题?
答案 0 :(得分:2)
但是我不明白我应该如何将整个字符串放在一个char索引中?
你不应该。 char name[1]
是一个大小为1
的数组,只能存储一个字符。如果要存储"David Baez"
,则需要指定大小为11
的数组。如果您不确定尺寸,那么就这样做:
char name[] = "David Baez";
或
char *name = "David Baez";
但是请注意,修改后者(*name
)会导致UB。
答案 1 :(得分:1)
创建一个包含一个索引的单维数组,该索引将包含一个带有全名的字符串。
那将是:
#include <stdio.h>
int main (void) {
char *myName[1] = {"Pax Diablo"};
printf ("%s\n", myName[0]);
return 0;
}
之所以如此:
[x][y]
个东西)。0
。答案 2 :(得分:1)
由于这是作业,我只是给出提示。把阵列搁置一会儿。如果您想创建一个包含您姓名的字符串,可以写char* name = "David Baez";
。
现在假设您需要取其中五个字符串(同样,每个字符串类型为char*
),并将它们全部放在一个数组中。那怎么样?一旦你得到了它,让数组只包含一个元素是微不足道的。
答案 3 :(得分:1)
如果你真的想要一个包含字符串的长度为1的数组,请使用指针:
char *name[1];
name[0] = "David";
printf("%s\n", name[0]);
上面定义了一个长度为1的数组,它的元素是一个指针(char *)。
答案 4 :(得分:1)
所以我知道C中的字符串只是字符串数组......
不完全。字符串是包含终止空字节的字符数组。
...但我不明白我应该如何装入整个字符串 一个char指数?
你做不到。如何在一个角色空间中放置多个角色?想一想。你可能做的是
// an array of characters
char name[] = "David Baez";
// an array of a single pointer to a const char
const char *namep[] = "David Baez";
答案 5 :(得分:0)
任务没有任何意义。 C中的字符串确实只是一个字符数组。
但是,它表示数组,因此您可以使用数组类型。然后有一个奇怪的,人为的替代品,这不太可能让你成为更好的C程序员...
typedef struct
{
char name[50];
}struct_t;
struct_t s[1];
strcpy(s.name[0], "David Baez");