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

标签 c

我已经有一段时间没有进行任何 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/

相关文章:

c - 如果我转换一个函数指针,改变参数的数量会发生什么

c# - C api 到 C# GUI

数组名称的 C 内存位置

c - typedef'ed struct c,如何访问在typedef中声明为指针的结构实例?

objective-c - Objective c UIImage 到 char* 转换返回空字符串

c - 不使用 * operator hack-y 方式获取产品

c++ - 为什么要使用 'extern "C+ +"' ?

在 OS X 上的 tmp 文件夹中创建临时文件夹

C:使用 void 指针的通用数据结构的更好语法?

您能否举例说明我列出的有关 c11 标准的 calloc 的提示,以帮助我理解它们?