我想在C
中存储一系列单词更具体一点,我想形成一个这样的数组:
a_cool_array_name={"first","second","third","fourth","fifth"};
我尝试使用:
#include <stdio.h>
int main()
{
/*i have tried using both single and double quotation marks */
char array1[4];
array1[0]='hello';
array1[1]='world';
array1[2]='its';
array1[3]='me';
printf("%s",array1[0]);
}
我尝试过使用单引号和双引号,但 BOTH 失败
在单引号中,程序在我尝试构建和运行它时崩溃了。在双引号的情况下,程序甚至根本不编译。 它抛出一个看起来像这样的错误
8:11:错误:赋值从指针生成整数而没有强制转换
在字符串中使用单引号和双引号有何不同?
和的
我如何制作一系列单词?
有没有其他方法存储其他2D数组的单词?这让一些事情变得混乱...... :(
答案 0 :(得分:9)
您对单个字符使用单引号:'c' 'd'
等,并对"first"
等字符串使用双引号。
这里要使用的是矩阵或二维chars数组:
char array[10][20];
现在array[0]
是20个字符的数组。您可以像使用普通数组一样使用它。例如:下面代码中的array[0][0]
为您提供'f'
。
char array[][20] = {"first","second","third","fourth","fifth"};
现在:
printf("%s\n",array[0]);
会给你&#34;首先&#34;
答案 1 :(得分:4)
你几乎拥有它,要定义一个字符串数组,你可以这样做 1
const char *array[] = {"first", "second", "third", "fourth", "fifth"};
另请考虑:
单引号用于获取与单个字符的ascii值对应的int
,称为字符常量。由单引号括起来的多个characeters称为 multicharaceter常量,并且还为您提供int
值,该值为实现已定义。
使用字符串文字时,如初始化上面的数组,请始终使用const
。这将有助于你防止修改它们是非法的。
c中没有字符串类型。要获得字符串,您需要了解它们是什么以及它们如何工作。 c字符串只是一个序列(数组,如果你)的非\0
字节后跟一个'\0'
标记其结尾。< / p>
在上面的代码中,您有5个字符串,例如"first"
,它包含以下序列
{'f', 'i', 'r', 's', 't', '\0'}
终止'\0'
非常重要。
所以你创建了一个指向 strings 的指针数组,但是上面解释了字符串。
1 char
poitners数组,用字符串文字初始化。所以它是一个指向字符串文字的char
指针数组。
答案 2 :(得分:1)
在C中,文本字符串存储为字符数组。如果要处理可变长度的字符串,可以使用指针来引用它们。以下是您的例子。
#include <stdio.h>
int main()
{
const char *array1[4]; // use const because we're pointing to literals
array1[0] = "hello";
array1[1] = "world";
array1[2] = "its";
array1[3] = "me";
printf("%s %s %s %s\n", array1[0], array1[1], array1[2], array1[3]);
}
array1
是一个包含4个字符串指针的数组。每个指针都被初始化为指向不同的文字字符串。使用双引号(不是单引号)在代码中创建文字字符串。
答案 3 :(得分:0)
这是一个例子,希望这对你有所帮助:
main()
{
int i;
char item[30][10]={"Chickpeas","Rice","Semolina","Wheat","Almond","Sapota","Dates","Asafetida","Garlic","Chilly","\0"};
int amt[10];
for(i=0;i<10;i++){
printf("Please enter the price for %s:", item[i]);
scanf("%d",&amt[i]);
}
printf("\n\n\nAmount per item is ");
for(i=0;i<10;i++){
printf("%s: %d\n",item[i],amt[i]);
}
dscnt=0;
getch();
}