【发布时间】:2015-07-09 05:39:56
【问题描述】:
我想将文件的以下内容加载到数组中。 文件内容:
[1,2,3,4,5]
[2,3]
[2]
[1,4,5,6,8,9]
现在,我想将第一行加载到整数数组'a' ( a ={1,2,3,4,5}) 中并进行一些操作。免费 a.取下一行并加载到'a' (a = {2,3}) 并执行一些操作等等......直到文件结束。
注意:每行可以有不同的数字计数。(我们不知道每行的数字计数)
如何扫描每一行并只取数字并将它们存储在数组中?
我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define DELIM " \r\n\t!@#$%^&*()_+-={}|\\:\"'?¿/.,<>’¡º×÷‘"
int main(int argc, char *argv[]){
int lineIdx = 0;
int charIdx = 0;
int TERMINATOR = 1753775;
char *token = "tmp";
char *orLine = malloc(4096 * sizeof(char));
char **importedLine = malloc(4096 * sizeof(orLine));
int tokenizedArray[100][100];// = malloc(sizeof(orLine * numOfLines));
FILE *f = fopen(argv[1], "r");
while(fscanf(f, "%s", orLine) != EOF){
importedLine[lineIdx] = orLine;
for(charIdx = 0; charIdx < strlen(importedLine[lineIdx]); charIdx++){
importedLine[lineIdx][charIdx] = importedLine[(lineIdx)][(charIdx+1)];
}
importedLine[lineIdx][(strlen(importedLine[lineIdx])-1)] = NULL;
token = strtok(importedLine[lineIdx], ", ");
charIdx = 0;
while(token != NULL){
tokenizedArray[lineIdx][charIdx] = atoi(token);
token = strtok(NULL, ", ");
charIdx++;
}
tokenizedArray[lineIdx][(charIdx)] = TERMINATOR;
lineIdx++;
}
tokenizedArray[(lineIdx)][0] = TERMINATOR;
fclose(f);
lineIdx = 0;
charIdx = 0;
while(tokenizedArray[lineIdx][charIdx] != TERMINATOR){
while(tokenizedArray[lineIdx][charIdx] != TERMINATOR){
printf("%d ",tokenizedArray[lineIdx][charIdx]);
charIdx++;
}
lineIdx++;
charIdx = 0;
printf("\n");
}
return 0;
}
提前致谢
【问题讨论】:
-
代码最终将成为解决此问题的必要条件。展示你的,也许我们可以告诉你你做错了什么以及如何纠正它。
-
@LakshmanKollipara 请添加您的代码,以便我们帮助您改进它。
-
欢迎来到 Stack Overflow!请拨打tour 并阅读How to Ask 以了解我们对这里问题的期望。请注意,我们不提供 from-scratch 编码服务。请告诉我们您已经尝试过什么,它是如何失败的,我们也许可以提供帮助。:-)
-
这是我的代码的链接。 [链接] (dpaste.com/3XKB80E) 和输入文件。 [链接] (dpaste.com/0V2J3MA)。