我已经有一段时间没有进行任何 C 编程了。我想知道如何将 char 指针的值分配给数组或变量。 示例:
char *line;
int v[100];
v[0]=atoi(line);
我基本上是使用 getline() 逐行读取文件,它返回一个 char * ,我想将每行的数据保存在数组中。
最佳答案
约翰·库格曼
首先,我主要在 Windows 和 OpemVMS 环境中进行编程。我无法直接访问 GNC 的 getline 函数。我的回答基于我的 C 经验和阅读 GNC implementation of getline() 。我的回答假设您正在使用以下版本的 getline();
ssize_t getline(char **lineptr, size_t *n, FILE *stream); // Non delimited version
正如Observer所说,最好的方法是使用某种类型的函数来复制数据。 (请注意,可以使用没有复制功能的 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 );
注意事项:
- 复制长度被计算为适合的最小值 数组。
- 如果数据是以空结尾的字符串,则数组元素 0 – 98 用于数据, 99 元素用于空终止符的占位符。请注意 空终止符实际上可以位于任何位置 (0-99),具体取决于数据 读入的长度。
- 如果数据包含空嵌入数据,则所有 100 个元素都用于 存储数据。
关于c - 如何将 char 指针值分配给整数/char 变量或数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57863339/