Итак, я написал следующий код в linux (Ubuntu), используя текстовый редактор emacs, который в основном предполагал разделить строку на пройденном делителе. Когда я его запускал, он был прерван, я побежал его, хотя GDB, и это дает мне ошибку в strcpy (который я не вызываю), но, вероятно, неявно выполняется в sprintf. Я не думал, что делаю что-то неправильно, поэтому загрузился в окна и запустил его через визуальную студию, и он отлично работает. Я новичок в написании C в Linux и знаю, что проблема в цикле While, где я вызываю sprintf() (который нечетно, потому что вызов вне цикла записывает без возникновения ошибки), чтобы записать токен в массив. Если кто-нибудь скажет мне, в чем я ошибаюсь, я бы очень признателен. Вот кодПроблемы с компиляцией в linux
/* split()
Description:
- takes a string and splits it into substrings "on" the
<delimeter>*/
void split(char *string, char *delimiter)
{
int i;
int count = 0;
char *token;
//large temporary buffer to over compensate for the fact that we have
//no idea how many arguments will be passed with a command
char *bigBuffer[25];
for(i = 0; i < 25; i++)
{
bigBuffer[i] = (char*)malloc(sizeof(char) * 50);
}
//get the first token and add it to <tokens>
token = strtok(string, delimiter);
sprintf(bigBuffer[0], "%s", token);
//while we have not encountered the end of the string keep
//splitting on the delimeter and adding to <bigBuffer>
while(token != NULL)
{
token = strtok(NULL, delimiter);
sprintf(bigBuffer[++count], "%s", token);
}
//for(i = 0; i < count; i++)
//printf("i = %d : %s\n", i, bigBuffer[i]);
for(i = 0; i< 25; i++)
{
free(bigBuffer[i]);
}
} //end split()
Ваша проблема не в компиляции на Linux - это с программой, которую вы пишете сбой. – Perry