在C中我想知道我是否可以使用int
作为计数器从我的数组列表中选择一个数组。如果不是,你会怎么建议绕过这个?对不起,代码可能会更好地解释它:
编辑:对不起我应该澄清说inputchar是一个单个字符,我试图看看inputchar是否是数组中任何单词中的一个字母
int i;
char word0[] ={'c','a','c','h','e'};
char word1[] ={'i','n','t','e','l'};
char word2[] ={'e','t','h','e','r','n','e','t'};
char word3[] ={'g','i','g','a','b','y','t','e'};
char word4[] ={'l','i','n','u','x'};
for (input = 0;input<i;input++)
{
if (inputchar==word(i)[input] /*this is the problem here, i want to use the int (i) to chose the array, i is randomized before this in the program */
{
w(i)[input]=inputchar;
lc++;
printf("You guessed correct! continue on word master");
}
}
答案 0 :(得分:3)
对您所拥有的最简单的更改是创建指向每个现有数组的指针数组:
char *words[] = { word0, word1, word2, word3, word4 };
由于您的数组不是以字符结尾的,因此您还需要知道它们的长度,并且您无法从words
访问它:
size_t wordlengths[] = { sizeof(word0), sizeof(word1), sizeof(word2), sizeof(word3), sizeof(word4) };
但是,如果您的代码实际上并不依赖于包含5个不同大小的可写数组(包含非终止字符数据),那么您可能会做得更好。
答案 1 :(得分:1)
为什么不使用字符串数组(指针)?
char* words[5];
然后分配单个字符串:
words[0] = "cache";
words[1] = "intel";
words[2] = "ethernet";
words[3] = "gigabyte";
words[4] = "linux";
现在您可以使用数组索引访问它:
words[i][input]
答案 2 :(得分:1)
诀窍是改变:
char word0[] ={'c','a','c','h','e'};
char word1[] ={'i','n','t','e','l'};
char word2[] ={'e','t','h','e','r','n','e','t'};
char word3[] ={'g','i','g','a','b','y','t','e'};
char word4[] ={'l','i','n','u','x'};
到例如:
char word[5][10] = { "cache",
"intel",
"ethernet",
"gigabyte",
"linux" };
然后你可以写例如。
if (inputchar == word[i][input])
...
答案 3 :(得分:1)
最简单的解决方法是数组数组:
char word[][9] = {"cache", "intel", "ethernet", "gigabyte", "linux"};
这将word
声明为{-1}}的9元素数组的5元素数组; 5是根据初始化程序中的项目数确定的,9需要保存最长的字符串(8个字符加0终结符)。
这确实意味着第一,第二和第五个字符串中有一些未使用的空间,但对于这样的练习来说,这可能不是什么大问题。如果你处理几千个字符串,最好声明一个指针数组,然后分别分配每个字符串,这样你只需要使用每个字符串所需的内存:
char
当你完成后,你需要为每个单词释放内存:
char *word[N]; // for N strings;
...
word[i] = malloc(length_of_string_for_this_element + 1);
if (word[i])
strcpy(word[i], string_for_this_element);
无论哪种方式,您都可以访问特定字符
for (i = 0; i < N; i++)
free(word[i]);
答案 4 :(得分:0)
也许你可以使用它(一系列指针),如果你不需要修改这些项目。
const char *words[ 5 ] = { "cache", "intel", "ethernet", "gigabyte", "linux" };
这是它的工作原理:
这是一个来自C的例子,如何由Deitel&amp;的Deitel。