在C编程中,将未知长度的格式化数据写入字符串的方法是使用动态内存分配和字符串连接。以下是一个简单的示例,说明如何实现这一点:
malloc()
函数动态分配内存。sprintf()
函数将格式化数据写入字符串。realloc()
函数调整内存大小以适应新的字符串长度。strcat()
函数连接字符串。以下是一个示例代码:
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
int main() {
char *str = NULL;
int length = 0;
// 动态分配内存
str = (char *) malloc(1);
if (str == NULL) {
printf("Memory allocation failed\n");
return 1;
}
str[0] = '\0';
// 将未知长度的格式化数据写入字符串
for (int i = 0; i < 5; i++) {
char temp[50];
sprintf(temp, "Hello %d\n", i);
// 调整内存大小
length += strlen(temp) + 1;
str = (char *) realloc(str, length);
if (str == NULL) {
printf("Memory allocation failed\n");
return 1;
}
// 连接字符串
strcat(str, temp);
}
printf("Final string: %s", str);
// 释放内存
free(str);
return 0;
}
这个示例代码将输出以下内容:
Final string: Hello 0
Hello 1
Hello 2
Hello 3
Hello 4
在这个示例中,我们使用malloc()
、realloc()
和free()
函数来动态管理内存,使用sprintf()
函数将格式化数据写入字符串,使用strcat()
函数连接字符串。这种方法可以处理任意长度的格式化数据,而无需预先知道字符串的确切长度。
领取专属 10元无门槛券
手把手带您无忧上云