C语言中的简单数组

时间:2014-04-02 06:30:45

标签: c arrays char

好的,我是一名Java程序员,我有一个课程作业(在C中)要求我做以下工作:

"创建包含一个索引的单维数组, 它将包含一个带有您全名的字符串"

所以我知道C中的字符串只是字符数组,但我不明白我应该如何在一个字符串索引中包含整个字符串?

char name[1] ; //initializing to 1 index
name[0] =  “David Baez”  ; // setting that one index "0" to my name

你会如何正确地解决这个问题?

6 个答案:

答案 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");