我有一个名为array
的数组,我想从某个文件中复制一个我读入的单词并将其存储在某个索引处的数组中,我该怎么做?
我认为当读取文件时,文件中的所有输入都是"字符串"形式。因此,如果文件中有一个数字 100,则表示为"100"。
我尝试了以下方法:
#define maxlength 10
char array[10];
int i = 0;
char word[maxlength];
strcpy(array[i], word); //error
array[i] = word; //error
我的猜测是因为word
是一个字符数组,它实际上不是要复制的字符串。有没有办法将word[]
以字符串格式复制到array[]
中?即数组中的索引 0 = ["hello"] 索引 1 = ["世界"] 等。
你对"字符串"概念的理解可能是错误的。
C 中的字符串只不过是一个字符数组,末尾是 NUL 终止符(字符' '
(。
你在这里有什么:
char array[10];
不是字符串数组,它只是一个字符数组。如果你想在array[0]
中存储整个字符串,那么你必须将你的数组声明为char
数组的数组,如下所示:
char array[10][10];
现在,array
的每个元素都可以容纳最多 9 个字符长的字符串(请记住,最后一个必须是终止符' '
(。
要复制您的word
,您首先必须确保它是一个有效的字符串(它应该再次以' '
结尾(,并确保它的长度少于 9 个字符(如果计算终止符,则为 10 个字符(,因为您声明了array[10][10]
.一旦你知道它是一个格式正确的字符串,你可以复制它:
strcpy(array[0], word);
如果您不知道 NUL 终止是否正确word
,或者您不知道它是否太长,那么您可以先尝试复制所有 10strncpy()
个字符,然后确保它正确终止,手动在末尾放置一个' '
:
strncpy(array[0], word, 10);
array[9] = ' ';
首先,让我们清除一些语法错误,然后我们可以复制。
-
卡尔词[最大长度]; --->字符词[最大长度]; 我希望您在某处定义了maxlength = 10,因为两个长度应该相同,否则它将出现运行时异常。
-
strcpy(array[i], word(;//error ---> strcpy(array, word(; strcpy 期望目标和源都应该是 char* 类型,并且您正在传递 array[i],当您通过"[i]"访问数组的元素时,它只是 char 类型,因此仅在 strcpy 中使用"array"。
-
array[i] = word//error --->数组副本中不需要这个,甚至在语法上,您尝试将 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