2016-07-02 51 views
0

编辑C数组我是一个小白到Ç编程(我来自的土地JSPHP),作为一个学习的过程,我试图写一个程序,要求提供用户的姓名,然后将其打印出来,除了将第一个字母更改为z。然而,当我去编译代码,它返回以下error消息中提到的行name[0] = "Z";无法通过索引

警告:赋值时将指针整数,未作铸

是否有一个原因,我可以” t将值分配给chararray中的特定索引?

(注:我曾尝试类型转换"Z"为char,但它只是扔error

警告:投从指针不同size`的整数)

+1

单引号不是双引号 –

回答

5

不像某些语言做不区分字符串和字符,C需要不同的字符语法(与单字符字符串相比)。

你需要使用单引号:

name[0] = 'Z'; 

的错误是很神秘的,虽然。它试图说"Z",一个单字符C字符串,被分配到name[0],一个整数类型char。 C字符串是数组;数组可转换为指针。因此,C将它视为一个指向int的指针而不需要强制转换。

+0

非常感谢。 JS和PHP没有这样的东西,所以我不知道。 –

4

替换name[0] = "Z";name[0] = 'Z';

'single-quatation'用于字符element,“double-quatation”用于字符串赋值。

2

在C中,单引号和双引号带有不同的含义。事实上,在C中没有“字符串”的概念。您有基本的char数据类型,其中char由单引号表示。为了表示字符串,可以将它们存储为一个字符数组。例如,

char text[] = {'h', 'e', 'l', 'l', 'o'}; 

这仅仅是一个写作的比较繁琐的方式

char text[] = "hello"; 

这是完全一样的第一个例子,不同之处在于有一个是空字符\0末(这是C如何检测“字符串”的结尾)。这与char text[] = {'h', 'e', 'l', 'l', 'o', '\0'};的说法相同,除非现在您可以更轻松地处理阵列,如果您想对其进行基于字符串的处理。


来到你的问题,如果你想索引的“串”某个字符,你需要通过它的指数在数组中访问它。

因此,text[0]返回字符h,这是char类型。要指定不同的值,您必须指定一个单引号字符,如下所示:

text[0] = 'Z';