如何在C中分配和访问数组结构中的数据
我试图创建一个struct类型的数组,但在创建之后,分配和访问数据时遇到了一些问题。我对C语言有基本的了解,但我还是个新手 以下是我对结构和数组的声明:如何在C中分配和访问数组结构中的数据,c,arrays,string,syntax,struct,C,Arrays,String,Syntax,Struct,我试图创建一个struct类型的数组,但在创建之后,分配和访问数据时遇到了一些问题。我对C语言有基本的了解,但我还是个新手 以下是我对结构和数组的声明: typedef struct search{ char word[10]; }; struct search words[40]; 我第一次需要使用数组是在需要在第一个元素中存储字符串(来自命令行参数)时。我在语法和理论上的错误是什么 words[0] = *argv[count]; //It says I can't assig
typedef struct search{
char word[10];
};
struct search words[40];
我第一次需要使用数组是在需要在第一个元素中存储字符串(来自命令行参数)时。我在语法和理论上的错误是什么
words[0] = *argv[count]; //It says I can't assign char to struct words
下一次我需要访问它时,它位于函数内部。第一行是我如何调用函数,然后我将发布函数原型,然后是里面给我带来麻烦的行。如果我需要澄清该结构,请告诉我
parseSearchWords(words); // function call
int parseSearchWords(struct search *word); // function prototype
word[0][0] = 'a';// THe lines giving me the errors
printf("%s\n", *word[0][0]);
虽然我确信这条语句的错误很明显,但错误在于:下标值既不是数组,也不是指针,也不是向量
谢谢你的帮助,如果我能澄清什么,请告诉我
我在语法和理论上的错误是什么
words[0] = *argv[count]; //It says I can't assign char to struct words
搜索词[0]=*argv[count]//它说我不能将char分配给struct
言语
您应该将argv[count]
字符串复制到搜索词[0]
中。searchWords[0]
是一个数组,它不是指针,因此无法指向argv字符串。请参阅以下链接以查看差异指针和数组:
您可以通过以下方式将argv[count]
字符串复制到searchWords[0]
中:
strcpy(searchWords[0], argv[count]);
我想你指的是words[0]
而不是searchWords[0]
。如果在这种情况下,您不能以这种方式访问第一个阵列。它应该是words[0]。word
。所以副本将是这样的
strcpy(words[0].word, argv[count]);
定义一个结构search
,该结构包含一个大小为10的char
s数组作为成员。如果要访问此数组的元素(char
s),则需要显式访问此成员:
int parseSearchWords(struct search *word) {
...
word[0][0] = 'a';
printf("%s\n", *word[0][0]);
}
应该是:
int parseSearchWords(struct search *s) {
...
s[0].word[0] = 'a';
printf("%s\n", s[0].word);
}
复制argv
应该更像这样:
struct search words[40];
int i = 0;
for (; i < argc; ++i) {
strncpy(words[i].word, *argv[i], 9);
words[i].word[9] = '\0';
}
然后,parseSearchWords
函数的原型可能会变成:
int parseSearchWords(Word *words)
在使用数组之前,请编写一个简单的程序,其中只包含一个
search
类型的变量,并确保您了解该变量的工作原理。谢谢您的帮助。@Vayran:不客气:)请参阅我的编辑,我意识到您发送到parsearchwords
的指针是您用argv
填充的words
数组的地址(对吗?:)访问其元素的方式应该有所不同:)
int parseSearchWords(Word *words)