我正在尝试为我的 char s[128] 数组分配新值。但是执行功能后,s 的地址不会改变。另一方面,该函数对于整数来说工作得很好。
void myscanf(const char *type, void *var){
char buffer[128];
memset(buffer,0,sizeof(buffer));
int size = read(0, buffer, 128);
if(strcmp(type, "%d") == 0){
int *d = (int*)var;
*d = buffer[0] - '0';
}
else if(strcmp(type,"%s") == 0){
char* str = (char*) var;
str = buffer;
}
}
int main(){
int d;
char s[128];
myscanf("%s", s);
return 0;
}
char* str = var;
(不需要强制转换(将var
void 指针转换为本地存储的char *
指针,然后用&buffer[0]
的地址覆盖该值(buffer
char 数组的第一个元素,衰减隐式(。
这没有可观察到的效果(并且可以完全优化(。
您可能想要通过var
/str
指针从缓冲区复制字符,然后