我想創建C程序來讀取文本文件並按升序排序。文本文件的例子是C程序存儲文件鋸齒陣列和排序它
2
3; 2, 5, 7
6; 4, 7, 8, 9, 5, 2
用第一行表示的行數,數字後的「;」指示元素的每行和元素用「,」分隔。 所以我的想法是創建一個動態鋸齒陣列作爲第一個數字的行,然後指出每個行與元素不同的數組。首先對指針數組排序,然後對每個數組的元素進行排序這是我迄今
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int SortLists();
int main()
{
int i,j = 0;
char filename[10]; //name of the file
char line[100];
int rows = 3; //I have to initialized this to test my code first
int cols;
int **jaggedArr; //jagged array
jaggerArr = malloc (rows*sizeof(int*)) ;
printf("Enter the file name with .txt : ");
scanf("%s", filename);
FILE *filePtr = fopen(filename, "r");
int num;
if (filePtr != NULL)
{
while (fgets(line, sizeof(line), filePtr) != NULL) //read each line of the text
{
cols = atoi(strtok(line, ";")); //use strtk to break elements
for (i = 0; i < rows; i++)
{
for (j = 0; j < cols; j++)
{
jaggedArr[i][j] = atoi(strtok(line, ",")); //parse into the jagged array
}
}
}
fclose(filePtr);
}
}
int SortLists(int list[], int size) //sort method
{
int i,j,temp;
for (i = 0; i < size; ++i)
{
for (j = i + 1; j < size; ++j)
{
if (list[i] > list[j])
{
temp = list[i];
list[i] = list[j];
list[j] = temp;
}
}
}
}
試圖同C初學者,我不熟悉指針的想法,這與C#有很多不同。 對不起,我的英語不好,因爲它不是我的第一語言。非常感謝你幫助我。
反覆'的strtok(行 「」)'不會做你想做的。由';'分隔的開啓者看起來很有希望,但是行處理的其餘部分應該用'strtok(NULL,',')'完成。也許爲這些行分配一些*內存* – WhozCraig 2014-09-24 17:19:04
感謝您花時間回答我的問題。通過分配內存,你的意思是使用行中元素的數量來初始化數組的大小? – user4075830 2014-09-24 17:54:08