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

Ved*_*yap 0 c arrays string

我想在C中存储一系列单词

更具体一点,我想形成这样的数组:

a_cool_array_name={"first","second","third","fourth","fifth"};
Run Code Online (Sandbox Code Playgroud)

我尝试过使用:

#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]);
}
Run Code Online (Sandbox Code Playgroud)

我一直在使用单和双引号试图然而BOTH失败

在单引号中,程序在我尝试构建和运行它时崩溃了.如果是双引号,程序甚至根本不编译.它抛出一个看起来像这样的错误

8:11:错误:赋值在没有强制转换的情况下从指针生成整数

在字符串中使用单引号和双引号有何不同?

如何使字的阵列?

有没有其他方法存储其他2D数组的单词?哪个很混乱...... :(

Ale*_*gić 9

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

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

    char array[10][20];
    
    Run Code Online (Sandbox Code Playgroud)

现在array[0]是20个字符的数组.您可以像使用普通数组一样使用它.例如:array[0][0]在下面的代码中给出了'f'.

char array[][20] = {"first","second","third","fourth","fifth"};
Run Code Online (Sandbox Code Playgroud)

现在:

printf("%s\n",array[0]); 会给你"第一"


Iha*_*imi 5

你几乎已经做到了,要定义一个字符串数组,你可以这样做1

const char *array[] = {"first", "second", "third", "fourth", "fifth"};
Run Code Online (Sandbox Code Playgroud)

另请考虑:

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

  2. 当使用字符串文字(例如上面初始化数组的字符串文字)时,请始终使用const. 这将帮助您防止非法修改它们。

中没有字符串类型。要拥有字符串,您需要了解它们是什么以及它们如何工作。字符串只不过是一个非字节序列(如果您愿意的话,可以是数组),后跟一个标记其结尾的 a。\0'\0'

上面的代码中有5个字符串,例如"first",它由以下序列组成

{'f', 'i', 'r', 's', 't', '\0'}
Run Code Online (Sandbox Code Playgroud)

终止'\0'非常重要。

因此,您创建了一个指向strings的指针数组,但字符串是上面解释的意义上的。


1一个指针数组char,用字符串文字初始化。所以它是一个char指向字符串文字的指针数组。