В настоящее время я пытаюсь реализовать программу, которая вносит файл, читает файл и копирует его содержимое в массив (farray). После этого мы копируем содержимое farray как строки, разделенные нулевыми терминаторами, в строковый массив sarray.Разбиение строки в C на null terminator
Например, farray содержит «ua \ 0 \ 0Z3q \ 066 \ 0», тогда sarray [0] должен содержать «ua», sarray [1] должен содержать «\ 0», sarray [2] должен содержать «Z3q», и, наконец, sarray [3] должен содержать «66»
Однако я не могу понять, как отделить строку от нулевых терминаторов. В настоящее время я могу использовать только системные вызовы, такие как fread, fopen, fclose, fwrite ... и т. Д. Может кто-нибудь, пожалуйста, помогите мне?
код ЦСИ:
#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;
}
То, что мы пытаемся сделать, состоит в том, чтобы расколоть и передать отдельные строки в саррей как отдельные элементы. Мы не заменяем никаких символов в farray нулевыми символами. –