نوشته شده توسط
<برنامه نویس>
سلام
میشه بگید چه جوری یکسری اطلاعات که به این شکل داخل یک فایل txt ریخته شده رو میتونیم به آرایه تبدیل کنیم که تو برنامه ازش استفاده کنید
سلام، مي دونم اينجور جواب دادن (لقمه آماده) درست نيست.
ولي خواستم يه تمريني واسه خودم كرده باشم! دوستان اگه ايرادي (حتي جزئي -مثلاً تو بافرها و ... ) مي بينن بفرمايند تا من ببينم چقدر C يادم مونده! ممنون :
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
/************************************************/
#define MAX_NAMES 1000
#define MAX_FILE_PATH 260
#define MAX_NAME_LENGTH 256
char* g_Names [MAX_NAMES];
/************************************************/
int loadNames(char* TheFile
,char delimiter)
{
int cnt = 0;
FILE* pSearchFile = NULL;
char c[2] = "\0",
pCurStr[MAX_NAME_LENGTH];
cnt = 0;
strcpy(pCurStr, "");
if (pSearchFile = fopen(TheFile, "r"))
{
while ((c[0]=getc(pSearchFile) )!= EOF)
{
c[1] = '\0';
if((c[0] != 10 ) &&
(c[0] != 13 ) &&
(c[0] != delimiter))
{
strcat(pCurStr, c);
}else
{
strcpy(c, "\0");
if ((g_Names[cnt] = (char *) malloc(strlen(pCurStr)+1)) == NULL)
{
printf("Not enough memory to allocate buffer\n");
exit(1); /* Exit function if out of memory */
}
if (strlen(pCurStr) > 0)
strcpy(g_Names[cnt++], pCurStr);
strcpy(pCurStr, "");
}
}
fclose(pSearchFile);
return cnt;
}else
{
fclose(pSearchFile);
return 0;
}
}
/************************************************/
void main(){
char filePath[MAX_FILE_PATH];
int readedCount, idx = 0;
printf("Please enter file path: ");
scanf("%s", filePath);
readedCount = loadNames(/*"C:\\Test.txt"*/filePath, ',');
if (readedCount > 0)
{
for(idx=0; idx < readedCount; idx++)
printf("Name[%d]=%s\n", idx, g_Names[idx]);
free(g_Names[idx]); // if not used anymore!
}else
printf("Cann't read any name from <%s>!", filePath);
getch();
}
/************************************************/