我有一个名为commands.txt的文本文件,其中包含一些命令,后跟一些参数。 例如:
STOP 1 2 4
START 5 2 1 8
MOVE
CUT 0 9
我想读取此文本文件中的每一行并打印类似这样的内容
STOP: 1 2 3
START: 5 2 1 8
MOVE:
CUT: 0 9
我用fgets阅读每一行然后我尝试使用sscanf但是不起作用。
char line[100] // here I put the line
char command[20] // here I put the command
args[10] // here I put the arguments
#include<stdio.h>
int main()
{
FILE *f;
char line[100];
char command[20];
int args[10];
f=fopen("commands.txt" ,"rt");
while(!feof(f))
{
fgets(line , 40 , f);
//here i need help
}
fclose(f);
return 0;
}
你能帮助我吗?
答案 0 :(得分:0)
我认为你以错误的方式处理整件事。如果你想收集与参数分开的命令来对它们做一些事情,那么你需要使用ctype.h进行测试。
但是,对于您想要输出的方式,您实际上并不需要保存所有这些缓冲区。只需打印整个东西,在你需要的地方填充你的冒号。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(){
FILE *f;
char *buf;
buf = NULL;
int i = 0, size;
f=fopen("commands.txt", "r");
fseek(f, 0, SEEK_END);
size = ftell(f);
fseek(f, 0, SEEK_SET);
buf = malloc(size + 1);
fread(buf, 1, size, f);
fclose(f);
for(i = 0; i < size ; i++){
while(isalpha(buf[i])){
printf("%c", buf[i++]);
}
printf(":");
while(buf[i] == ' ' || isdigit(buf[i])){
printf("%c", buf[i++]);
}
printf("\n");
}
return 0;
}