2016-02-29 3 views
0

Это часть более крупной программы, которую я пытаюсь написать, но по какой-то причине я, похоже, застрял в этой части, и я надеюсь, что кто-то объяснит, почему у меня эта проблема.Прокрутка Текстовая программа

Так что я хочу сосредоточиться на этом сообщении, это взять целое число, которое определяет, сколько слов будет следовать. Затем я хочу взять каждое слово и немедленно распечатать его.

Это то, что у меня есть.

int main(){ 

     int i; 
     int numWords; 
     char word[100]; 



     scanf("%d", &numWords); 

     for(i=0;i<numWords;i++){ 
      gets(word); 
      printf("The word is %s\n", word); 

     } 

    return 0; 
} 

У меня есть входной файл, который гласит:

5 
Hello 
world 
this 
is 
happening 

Это то, что выводится

The word is 
The word is Hello 
The word is world 
The word is this 
The word is is 

Как я уже сказал, это только часть того, что мне нужно сделать, но выяснение этого поможет мне закончить все остальное.

+1

Вы не должны использовать 'gets()', что неизбежно приводит к переполнению буфера. – MikeCAT

+0

[Программа не сработала] (http://melpon.org/wandbox/permlink/KECkQRHEKDanvjhH). – MikeCAT

+0

Если у вас есть сбои, тогда запустите в отладчике, чтобы поймать крах в действии, и посмотрите, где именно в вашем коде произошел сбой. Также взгляните на все переменные и убедитесь, что их значения выглядят подходящими. –

ответ

0

Изменить

scanf("%d", &numWords); 

в

fgets(word, sizeof(word), stdin); 
sscanf(word, "%d", &numWords); 

так, что fgets() будет читать символ новой строки после числа и первого gets() не будет читать и остановиться.

+0

Спасибо! Это сработало, я ценю это! Если вы не против одной последней вещи, мой следующий шаг принимал целое число сразу после слова. Должен ли я использовать scanf? Когда я попытался с scanf, целое число оставалось неизменным для двух итераций цикла. – RickyD

 Смежные вопросы

  • Нет связанных вопросов^_^