【发布时间】:2016-05-15 09:36:58
【问题描述】:
我是 C 新手,我得到了一个任务,从 .txt 文件中逐行读取并将一些字符串解析为矩阵,其中第一行是第一行,第二行是第二行等。这就是我的text.txt 文件:
07 45 C4 16 0F 02 19 0I 17 0G
09 45 C4 15 0E 03 11 0A 12 0B 13 0C
13 45 C4 13 0C 03 19 0I 11 0A 17 0G 14 0D 16 0F
05 45 C4 18 0H 01 12 0B
这是我目前能够做到的:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *Read(char filename[]);
void split(char *content);
int main(void){
char filename[] = "text.txt";
char *content = Read(filename);
split(content);
return 0;
}
char *Read(char filename[]){
char *buffer;
long size;
FILE *log = fopen("text.txt", "r");
fseek(log, 0, SEEK_END);
size = ftell(log);
rewind(log);
buffer = (char*) malloc(sizeof(char) * size);
fread(buffer, 1, size, log);
fclose(log);
return buffer;
}
void split(char *content){
char *buffer = strtok(content, " ");
while(buffer != NULL){
printf("%s\n", buffer);
buffer = strtok (NULL, " ");
}
}
我非常感谢代码中的 cmets,因为我是新手,它会帮助我更好地理解一些事情。
【问题讨论】:
-
哪些因素决定了何时应该拆分字符?
-
我不确定我理解您所说的“何时”是什么意思。它应该逐行解析,并且每一行都应该按照我之前解释的格式进行拆分。
-
您只是在读取文件并打印它?你在哪里拆分它?
-
读取,放入数组并打印。如果您的意思是在我的代码中进行拆分,那就是问题所在。我不知道如何以及在哪里进行拆分。我只知道如何打开文件并逐行读取。
-
@Mihajlo 请更清楚您要如何拆分字符串。是不是如果它以 0 开头是两个字符长,如果它以 1 开头是四个字符长?
标签: c arrays string parsing split