gpt4 book ai didi

c - 如何将逗号分隔字符串中的字段解析为 C 中的整数数组?

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:07 26 4
gpt4 key购买 nike

如何在 C 中将逗号分隔字符串中的字段解析为整数数组?

输入文件日期如下-

61,2,771,5,321,3,542,4,124,5,524,3,566,2,86,5,303,6,44

我需要将这些数据存储在array[u][v] 中。 u = 第一列,v = 第二列。该数组的值将是每行的第 3 项。请帮帮我

最佳答案

第一行给出了数组的大小,我说得对吗?我将此视为假设。

字符串的解析是通过 C 中的 scanf() 和 C++ 中的流提取器运算符完成的。正确处理逗号和换行符需要多加注意。

我看到的下一个问题与“解析”问题没有直接关系,它是整数数组的处理。你想要动态的还是静态的? (静态的意思是:数组的大小在编译时是已知的)。如果你想让它动态,你不能使用这样的结构:array[u][v] = value; 在 C 中。在 C++ 中你可以,但你需要正确声明数组。我下面的两个解决方案都使用动态数组。

C

这是一个纯 C 的解决方案。

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

int main()
{
int size, u, v, value;
FILE * pFile;
int *array;

pFile = fopen ("data.txt","r");

fscanf (pFile, "%d", &size); // reading the first line here

array = malloc(size*size*sizeof(int)); // allocate the array based on size of first line
memset(array,0,size*size*sizeof(int)); // set the array to zero

while(!feof(pFile)) // read until the end...
{
fscanf(pFile, "%d,%d,%d\n", &u, &v, &value); // read 3 integer values
array[(u-1)*size + v] = value; // we have to calculate the index ourselves
}
fclose(pFile); // we are done with reading

// the follwing prints the contents of the array to visualize
for(u = 1; u<=size; ++u)
{
for(v=1; v<=size; ++v)
printf("%d, ", array[(u-1)*size+v]);
printf("\n");
}

free(array); //
return 0;
}

C++

在 C++ 中也是如此。但是,它没有为动态数组使用 STL 容器,这可能会更“优雅”。

#include <fstream>
#include <iostream>
#include <cstring>

using namespace std;

int main()
{
char c;
int size, u,v,value;

fstream file("data.txt");
file >> size;

int array[size+1][size+1] ;
memset(array,0,sizeof(array));

while(file.good())
{
file >> skipws >> u >> c >> v >> c >> value;
array[u][v] = value;
}

for(u = 1; u<=size; ++u)
{
for(v=1; v<=size; ++v)
cout << array[u][v] << ", ";
cout << "\n";
}
file.close();
}

关于c - 如何将逗号分隔字符串中的字段解析为 C 中的整数数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9069537/

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