如何将char指针值分配给整数/ char变量或数组

时间:2019-09-10 02:38:44

标签: c

一段时间以来,我从事任何C编程。我想知道如何将char指针的值分配给数组或变量。 示例:

char *line;
int v[100];
v[0]=atoi(line);

我基本上是使用getline()逐行读取文件,并且它返回char *,我想将数组中每一行的数据保存起来。

1 个答案:

答案 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 );

注意事项:

  • 副本长度被计算为适合的最小值 数组。
  • 如果数据是一个以null终止的字符串,则将数组元素0 – 98用于数据, 99元素用于空终止符的占位符。注意 空终止符可以实际位于任何位置(0-99),具体取决于数据 读入的长度。
  • 如果数据包含空的嵌入式数据,则将所有100个元素用于 存储数据。
相关问题