/* Я не уверен, что мой код для сохранения токенов в массиве точным. Это потому, что когда я запускаю свою программу, код для сравнения token[0]
с моей переменной не дает выхода или не выполняет назначенные функции.как сохранить токен строки, сохранить его содержимое в массив, затем использовать это содержимое для дальнейшего сравнения.
Поэтому я уверен, что есть что-то неточное о моем кодирования. */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
//variable declarations
const char *array[] = {"ax","bo","cf"};
char delim[]=" \n";
char* myline;
size_t max = 500;
char* token1;
char* token2[max];
int n = 0;
while(1) //loop always
{
printf("Enter an argument\n"); //asks for an input
getline (&myline, &max, stdin); //read the input/line
//for loop -- splits up the line into tokens
for(token1 = strtok(myline, " "); token1 != NULL; token1 = strtok(NULL, delim))
{
token2[n] = malloc(strlen(token1)+1); //allocate some space/memory to token2[n]
//save the token in an array by copying from token1 to token2
strcpy(token2[n],token1);
int m;
for(m = 0; m<sizeof(array);m++) //loop through the array elements for comparison
{
//compare array at index m with token at index 0 -- compare only first token with a specific variable
if(strcmp(token2[0], array[m]) == 0)
{
printf("equal");
}
}
}
free(token2[n]); //deallocate assigned memory
}
return(0);
}
Единственная проблема с вашим кодом - стиль, а не проверка возвращаемого значения malloc. –
Где вы читаете эту строку? –
строка считывается из stdin с использованием getline – Atinuke