gpt4 book ai didi

c - C语言从文本文件中提取字符串和整数并将它们放入数组

转载 作者:行者123 更新时间:2023-11-30 20:20:20 25 4
gpt4 key购买 nike

我在这里遇到问题,我无法弄清楚,所以任何帮助将不胜感激,我有一个文本文件,其中包含用逗号分隔的字符串和整数,我想提取整数并将它们放入数组中并提取字符串并将它们放入另一个数组中,这是文本文件示例:

1,2,dfds,dv,h,dfdd,wfdsf,e,3,4,yee,rss,a,6,8,5

这是代码:

#include <stdio.h>
#include <stdlib.h>

#include "vector.h"

void readDataByDelimiter(const char* File, vector *v)
{
FILE *myFile;
myFile = fopen(File, "r");

//read file into array
int numberArray[16];
int i;
char b[100];

for (i = 0; i < 16; i++)
{
fscanf(myFile, "%d,%c,",&numberArray[i] , &b[i]);
}

for (i = 0; i < 16; i++)
{
printf("Number is: %d\n\n", numberArray[i]);
printf("Number is: %c\n\n", b[i]);
}
}

最佳答案

要仅读取整数并跳过其他任何内容,您可以使用以下方法

#include <stdio.h>

int main()
{
FILE * f = fopen("file.txt","r");
int number;
int res;
while((res = fscanf(f, "%d,",&number)) != EOF){
if(res == 1){
printf("%d,", number);
}
else{
fscanf(f,"%*[^,],");
}
}
printf("\n");
return 0;
}

这里,当 res 为 1 时 - 您可以将读取的数字添加到数组中。当 res 为 0 时 - 你需要跳过所有内容直到下一个,当 fscanf 返回 EOF 时 - 这意味着文件结尾已丰富

编辑2

我真的不明白是什么阻止您扩展我的样本来完成您想要的事情。这是稍微扩展的版本

#include <stdio.h>

int skip(FILE* f) {
for(;;)
{
int res = fgetc(f);
if(res == EOF)
return 0;

if(res == ',')
return 1;
}
}
int main()
{
FILE * f = fopen("file.txt","r");
int number;
int res;
while((res = fscanf(f, "%d,",&number)) != EOF) {
if(res == 1) {
printf("number - %d\n", number);
//add number to array
}
else {
char buffer[100];
if(fscanf(f,"%99[^,]",buffer ) == 1)
{
printf("string - %s\n", buffer);
//add buffer to string array
}
if(!skip(f))
break;
}
}
printf("\n");
return 0;
}

关于c - C语言从文本文件中提取字符串和整数并将它们放入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46551339/

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