如何在C中的数组中存储单词?

时间:2016-01-21 13:58:22

标签: c arrays string

我想在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数组的单词?这让一些事情变得混乱...... :(

4 个答案:

答案 0 :(得分:9)

  1. 您对单个字符使用单引号:'c' 'd'等,并对"first"等字符串使用双引号。

  2. 这里要使用的是矩阵或二维chars数组:

    char array[10][20];
    
  3. 现在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"};

另请考虑:

  1. 单引号用于获取与单个字符的ascii值对应的int,称为字符常量。由单引号括起来的多个characeters称为 multicharaceter常量,并且还为您提供int值,该值为实现已定义

  2. 使用字符串文字时,如初始化上面的数组,请始终使用const。这将有助于你防止修改它们是非法的。

  3. 中没有字符串类型。要获得字符串,您需要了解它们是什么以及它们如何工作。 字符串只是一个序列(数组,如果你)的非\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();


}