我想这是我
正在研究的一个非常复杂的想法
int capacity = 100;
name = malloc(capacity * sizeof(char));
int len = 0;
char* i;
for (i = str; *i; i++) {
if (len >= strlen(name)) {
capacity *= 2;
name = realloc(name, len * sizeof(char));
}
len++;
}
假设name
已声明为 char 指针,str
作为参数传入。为什么这不能将数组的大小加倍?
我采取的另一种方法是
int nameLength = 0;
int capacity = 100;
char* name = NULL;
double price = 0.0;
int position = 0;
if (sscanf(str, "add %s %lf %n", name, &price, &position)) {
nameLength = capacity - position;
capacity += nameLength;
name = realloc(name, capacity * sizeof(char));
} else {
name = malloc(REMAINING_MAX * sizeof(char));
}
我试图利用%n
格式说明符的地方。
strlen
用于知道字符串中存储了多少有用的字符。为此,它会计算在查看终止字符串