- Я открываю входной файл
- я читаю это
- Сохранение двумерного массива
- разделить на токены
- сначала strtok для "\n" и сохраните его
- во-вторых, strtok для ":" игнорируйте его
- а затем strtok для "," и сохраните его
- Я хочу найти слово для каждой строки (которую я сохранил на шаге 5)
- Для поиска я использую strstr, но не могу этого сделать.
Я добавляю свой входной файл и код.
int
main ()
{
FILE *fp;
fp = fopen ("C:\\input.txt", "r");
char *name[10][10];
char row[100];
char *token, *tkn, *tk;
int h = 0, f = 0, l = 0;
for (h = 0; h < 9; h++)
{
for (f = 0; f < 9; f++)
name[h][f] = NULL;
}
while (fgets (row, sizeof (row), fp))
{
token = strtok (row, "\n");
name[l][0] = strdup (token);
//printf("%s",name[l][0]);
tkn = strtok (token, ":");
tk = strtok (tkn, ",");
isim[l][1] = strdup (tk);
if (strstr (name[l][1], name[l + 1][0]) == 0
|| strstr (name[l][1], name[l + 2][0]) == 0
|| strstr (name[l][1], name[l + 3][0]) == 0)
{
}
l++;
}
fclose (fp);
}
Я хочу вставить связанный список с помощью этой функции.
struct AdjListNode{
char *courseName;
char *studentName;
struct AdjList *head;
struct AdjListNode *nextPtr;};
typedef struct AdjListNode node;
typedef struct AdjListNode* nodePtr;
typedef struct AdjListNode** nodePtrPtr;
nodePtr insertVertex(nodePtrPtr header,char *studentName,char *courseName){
nodePtr newNode, temp, prev;
// create node to insert and assign values to its fields
//newNode=createAdjListNode(studentName,courseName);
newNode=malloc(sizeof(node));
newNode->studentName=studentName;
newNode->courseName=courseName;
newNode->nextPtr=NULL;
// if LL empty
if (*header == NULL)
*header=newNode;
// if LL not empty
else {
temp=*header;
while (temp != NULL && (strcmp(temp->courseName,newNode->courseName)<0)) {
prev=temp;
temp=temp->nextPtr;
}
while (temp!=NULL && (strcmp(temp->courseName,newNode->courseName)==0)) {
printf("\n existent key \n");
return temp;
}
// insert node in a sorted fashion
if (temp!=NULL)
newNode->nextPtr=temp;
// if value to insert is the least in LL then have header point to node
if (temp==*header)
*header=newNode;
// otherwise insert node in correct position
else
prev->nextPtr=newNode;
}
return newNode;}
Мой файл input.txt:
George :Math1,History2,Math2
ELizabeth :Math2,Germany1,spanish1
Adam :Germany1,History2,Math1
Я хочу создать график с названиями лекций и использовать список смежности. Для списка смежности мне нужно соединение двух лекций, но я застрял на этом шаге. Как я могу найти всю строку, а затем сохранить массив. Например, я ищу Math1 . это в 2 строки. И затем я хочу создать список adj Math1 -> History2-> Math2-> Germany1 для Math1. Пожалуйста, помогите мне
token = strtok (row, "\n")
иtkn = strtok (token, ":");
могут возвращатьNULL
, защитное кодирование будет учитывать это. - person chux - Reinstate Monica   schedule 21.12.2014