我这里有一点问题 memcpy()
当我写这个
char ipA[15], ipB[15];
size_t b = 15;
memcpy(ipA,line+15,b);
Run Code Online (Sandbox Code Playgroud)
它b从line第15个元素开始复制数组中的字节(很好,这就是我想要的)
memcpy(ipB,line+31,b);
Run Code Online (Sandbox Code Playgroud)
这b从第31个元素开始的行复制字节,但它也附加了前一个命令的结果,即ipA.
为什么?ipB大小是15,所以它没有足够的空间来复制其他任何东西.这里发生了什么事?
ipA是192.168.123.123ipB变成了205.123.123.122 192.168.123.123我哪里错了?我实际上并不知道很多关于C中的内存分配.
即时通讯使用fgets读取行格式.txt文件.我传递一个数组作为第一个参数.不同的行填充数组中不同的空间量,但我想知道读取的行的确切长度,并根据该行做出决定.可能吗?
FILE * old;
old = fopen("m2p1.txt","r");
char third[100];
fgets(third,sizeof(third),old);
Run Code Online (Sandbox Code Playgroud)
现在,如果我要求sizeof(第三),它显然是100因为我自己声明(我不能声明'第三'数组而不指定大小)但我需要获得从文件读取的行的确切大小(因为它可能不填写enitre数组).
可能吗?该怎么办?