2015-12-10 3 views
1

Я собираюсь закодировать токенизатор, и я действительно удивлен, мне удалось сделать компилируемый код: D, но у меня есть проблема, я не знаю, как ее решить.C programing-Array в строку

Я начинаю с создания array[WORD_MAX_SIZE]={0}. После использования fopen *'r'. Максимальный размер Word определяется глобально. Моя программа работает нормально, и я получаю все, что захочу, но я хочу что-то изменить, но я не знаю, как это сделать. Я печатаю результат на экране в конце моего цикла While. Но я хочу сохранить полный результат в одном string. Вместо того, чтобы печатать его, я бы хотел, чтобы это было в stringset, поэтому я могу поиграть с ним позже. Может ли кто-нибудь помочь?

Заранее спасибо.

while (feof(fp)==0) 
{ 
    c=fgetc(fp); 

    if(isalpha(c)) 
    { 
     array[i]=c; 
     i++; 
    } 
    else if (i!=0) 
    { 
     array[i]='\0'; 
     i=0; 
     printf("%s\n", array); 
    } 
} 

fclose(fp); 

return 0; 
+0

'while (feof (fp) == 0)' не будет работать должным образом. См. Http://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong –

ответ

1

Вы всегда можете использовать sprintf() вместо printf(). printf() переходит на консоль. С помощью sprintf() вы можете выбрать, где печатать.

Например:

char returnedArray[100]; // or change the size 
sprintf(returnedArray, "%s\n", array); 

Теперь у вас есть массив символов (помните, у вас нет строки в C), сохраненный в returnedArray.

+0

Спасибо, что ответили. Если я использую эту нотацию sprintf (returnArray, "% s \ n", array); Означает ли это, что он сохраняется в одном массиве символов? –

+0

Да, после этого содержимое массива будет сохранено в returnArray (с символом прерывания строки в конце из-за '\ n'). Если бы этот ответ помог вам, не могли бы вы принять его? :) – Paulo