用空终止符拆分C中的字符串
我目前正在尝试实现一个程序,该程序接收一个文件,读取该文件并将其内容复制到一个数组(farray)。在此之后,我们将farray的内容作为字符串复制到一个名为sarray的字符串数组中,字符串由空终止符分隔 例如,假设farray包含“ua\0\0Z3q\066\0”,那么sarray[0]应该包含“ua”,sarray[1]应该包含“\0”,sarray[2]应该包含“Z3q”,最后sarray[3]应该包含“66” 但是,我不知道如何用空终止符分隔字符串。我目前只能使用系统调用,如fread、fopen、fclose、fwrite…等。有人能帮我吗 src代码:用空终止符拆分C中的字符串,c,null-terminated,C,Null Terminated,我目前正在尝试实现一个程序,该程序接收一个文件,读取该文件并将其内容复制到一个数组(farray)。在此之后,我们将farray的内容作为字符串复制到一个名为sarray的字符串数组中,字符串由空终止符分隔 例如,假设farray包含“ua\0\0Z3q\066\0”,那么sarray[0]应该包含“ua”,sarray[1]应该包含“\0”,sarray[2]应该包含“Z3q”,最后sarray[3]应该包含“66” 但是,我不知道如何用空终止符分隔字符串。我目前只能使用系统调用,如fread
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
int main(int argc, char *argv[]){
char *farray;
const char *sarray;
long length;
int i;
//Open the input file
FILE *input = fopen(argv[1], "rb");
if(!input){
perror("INPUT FILE ERROR");
exit(EXIT_FAILURE);
}
//Find the length
fseek(input, 0, SEEK_END);
length = ftell(input);
fseek(input, 0, SEEK_SET);
//Allocate memory for farray and sarray
farray = malloc(length + 1);
//Read the file contents to farray then close the file
fread(farray, 1, length, input);
fclose(input);
//Do string splitting here
//Free the memory
free(farray);
return 0;
}
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[]){
焦*法拉;
const char*sarray;
长度长;
int i;
//打开输入文件
文件*input=fopen(argv[1],“rb”);
如果(!输入){
perror(“输入文件错误”);
退出(退出失败);
}
//找出长度
fseek(输入,0,搜索结束);
长度=ftell(输入);
fseek(输入,0,搜索设置);
//为farray和sarray分配内存
farray=malloc(长度+1);
//将文件内容读取到farray,然后关闭文件
fread(farray,1,长度,输入);
fclose(输入);
//你在这里分线吗
//释放内存
游离(法拉利);
返回0;
}
长度
,以备将来使用N+1
farray
,确保指针数组中的元素指向farray
中的正确位置在步骤(5)中,使用
strdup
并将返回值分配给指针数组的元素,而不是指向farray
我们试图做的是拆分farray并将单个字符串作为单个元素复制到sarray中。我们不会用空字符替换farray中的任何字符。