如何在C语言中创建包含300个相同单词的数组?
C语言实现重复存储同一单词300次
先指出你代码里的核心问题:
- 赋值方向完全搞反了:你当前是把
alotWord的内容往word里写,但实际需求是把word的内容复制到alotWord中 - 数组定义要匹配需求:如果要得到
wordwordword...这种连续长字符串,alotWord应该定义为一维数组;如果是存储300个独立的"word",才用二维数组,但要预留字符串结束符的空间
下面给出两种符合需求的实现方式:
方式一:生成连续的长字符串(如word重复300次)
这种方式会得到一个包含300次"word"的连续字符串,总长度为4*300 + 1(1200个字符+1个字符串结束符):
#include <stdio.h> #include <string.h> int main() { char word[] = "word"; int word_len = strlen(word); // 数组长度 = 单词长度 * 重复次数 + 1(预留'\0'的位置) char alotWord[word_len * 300 + 1]; // 初始化数组为空字符串 alotWord[0] = '\0'; for(int i = 0; i < 300; i++) { // 每次将word追加到alotWord末尾 strcat(alotWord, word); } // 输出结果验证 printf("%s\n", alotWord); return 0; }
方式二:用二维数组存储300个独立的"word"
如果需要把300个"word"分别存在数组的不同元素里(每个元素是独立的单词),可以这么写:
#include <stdio.h> #include <string.h> int main() { char word[] = "word"; // 二维数组:300个元素,每个元素预留5个字符空间(4个字符+1个'\0') char alotWord[300][5]; for(int i = 0; i < 300; i++) { // 直接用strcpy复制整个字符串(自动包含'\0') strcpy(alotWord[i], word); // 也可以用你原来的循环方式,注意修正赋值方向并手动加结束符: // for(int j = 0; j < 4; j++) // { // alotWord[i][j] = word[j]; // } // alotWord[i][4] = '\0'; } // 输出前5个元素验证 for(int i = 0; i < 5; i++) { printf("%s ", alotWord[i]); } printf("\n"); return 0; }
关键注意点
- C语言的字符串必须以
'\0'结尾,定义数组时一定要预留足够空间,否则会出现乱码或内存越界问题 - 使用
strcpy、strcat、strlen这类字符串操作函数时,必须包含头文件<string.h> - 如果用手动循环复制字符,记得给每个字符串手动添加
'\0'
内容的提问来源于stack exchange,提问作者Halim Berke
相关产品推荐
相关产品推荐

