gpt4 book ai didi

c - 如何用C语言从字符串中按数字分隔单词

转载 作者:行者123 更新时间:2023-11-30 17:53:19 26 4
gpt4 key购买 nike

我有一个名为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;
}

你能帮我吗?

最佳答案

我认为你以错误的方式处理整件事。如果您想收集与参数分开的命令来对它们执行某些操作,那么您需要使用 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;
}

关于c - 如何用C语言从字符串中按数字分隔单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15670061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com