一段时间以来,我从事任何C编程。我想知道如何将char
指针的值分配给数组或变量。
示例:
char *line;
int v[100];
v[0]=atoi(line);
我基本上是使用getline()
逐行读取文件,并且它返回char *
,我想将数组中每一行的数据保存起来。
答案 0 :(得分:0)
约翰·库格曼
首先,我主要在Windows和OpemVMS环境中编程。我没有直接访问GNC的getline功能的权限。我的回答是基于我的C经验和阅读GNC implementation of getline()的结果。我的答案假设您使用的是以下版本的getline();
ssize_t getline(char **lineptr, size_t *n, FILE *stream); // Non delimited version
正如观察家所说,最好的方法是使用某种类型的函数来复制数据。 (请注意,可以使用不带复制功能的FOR循环)。您需要注意一些事情。返回的数据可能大于接收数据的数组。为了再次保证这种安全,您应在复印前验证复印长度。
char v[100] = {0}, *line = null;
len = getline ( &line, . . . . );
// Method for coping null terminated data
copyLen = (len < 100)? len : 99 ;
strncpy ( v, line, copyLen );
v[copyLen]=0;
Or
// Method for coping data with embedded nulls
copyLen = (len <= 100)? len : 100 ;
memcpy ( v, line, copyLen );
注意事项: