如何将strcpy()与数组元素一起使用?

时间:2019-09-02 03:44:30

标签: c arrays string c-strings

我有一个名为[ { ID:12, // ...etc // IAM GETTING THE TAXONOMY TYPE NOT THE TERMS IT SELF //( term_id on the wp_term_taxonomy table not here either ) categories:[ { termTaxonomyId:3, taxonomy:"category", description:"", parent:"0" }, { termTaxonomyId:6, taxonomy:"category", description:"", parent:"0" } ] } ] 的数组,我想复制一个文件中读取的单词并将其存储到该数组中的某个索引处,我该怎么做?

我认为读取文件时,来自该文件的所有输入均为“字符串”形式。因此,如果文件中有数字100,则其表示为“ 100”。

我尝试了以下方法:

array

我的猜测是因为#define maxlength 10 char array[10]; int i = 0; char word[maxlength]; strcpy(array[i], word); //error array[i] = word; //error 是一个字符数组,实际上不是要复制的字符串。有什么方法可以将word以字符串格式复制到word[]中?即数组中的索引0 = [“ hello”]索引1 = [“ world”]等。

2 个答案:

答案 0 :(得分:2)

您对“字符串”概念的理解可能是错误的。

C语言中的字符串不过是一个字符数组,最后一个NUL终止符(字符'\0')。

您在这里拥有什么:

char array[10];

不是字符串数组,而是字符数组。如果要将整个字符串存储在array[0]中,则必须将数组声明为char数组,如下所示:

char array[10][10];

现在,您的array的每个元素都可以容纳最多9个字符的字符串(请记住,最后一个必须是终止符'\0')。

要复制您的word,首先必须确保它是一个有效的字符串(再次以'\0'结尾),然后请确保其长度少于9个字符(如果算出终止符,则为10个字符),因为您声明了array[10][10]。一旦知道它是正确格式的字符串,就可以复制它:

strcpy(array[0], word);

如果您不知道word是否正确以NUL结尾,或者您不知道它是否太长,则可以先尝试用strncpy()复制所有10个字符,然后确保已正确终止,请手动将'\0'放在末尾:

strncpy(array[0], word, 10);
array[9] = '\0';

答案 1 :(得分:-1)

首先让我们清除一些语法错误,然后进行复制。

  1. cahr word [maxlength]; ---> char word [maxlength]; 我希望您在某个地方定义了maxlength = 10,因为两个长度应该相同,否则会出现运行时异常。

  2. strcpy(array [i],word); //错误---> strcpy(array,word); strcpy希望目标和源都应为char *类型,并且您要传递array [i],这是唯一的char类型,因为您通过“ [i]”访问array的元素,因此只能在strcpy中使用“ array”。

  3. array [i] =单词//错误--->不需要在数组副本中使用它,甚至在语法上,您尝试将char *分配给char是错误的。

因此,我们的最终代码段如下所示:

char array[10];

char word[10] = {'T','h','a','n','k',' ','y','o','u'};

strcpy(array, word); // word is copied to the array

cout << array; ---> Thank you