2016-09-30 1 views
3

Я очень новичок в программировании, и мне интересно, есть ли способ распечатать первое слово строки с помощью gets() в C?Есть ли способ распечатать только первое слово строки с gets() в C?

void printFirstWord(char string[]) 
{ 
    int i; 

for(i = 0; i < (string[i] != '\0'); i++) 
    { 
    if(isalpha(string[i])) 
     printf("%c", string[i]); 
    } 


} 

int main() 
{ 

char string[MAX]; 
printf("Type in a scentence"); 
gets(string); 
printFirstWord(string); 


return 0; 
} 

Это функция, которую я написал и назвал в основном прямо сейчас. Это потому, что у меня есть isalpha в функции?

+0

что делает код делать? что вы ожидали от этого? – skrrgwasme

+6

'gets()' не печатает * никаких * слов. Кроме того, 'gets()' устарел и больше не является стандартным C. – Dmitri

+0

В 'printFirstWord', выходите из цикла' for', когда вы дойдете до конца первого слова. – jxh

ответ

1

В своей реализации, вы можете добавить следующую строку в цикле:

if (string[i] == ' ') 
break; 

также, исправить свои параметры цикла, например, например:

for (i = 0; i < strlen(string); i++) 

Общая реализация в вас будет такой, как показано ниже. Рассмотрите возможность выбора другого дизайна в соответствии с полученными вами комментариями, например. не использует получает.

void printFirstWord(char string[]) 
{ 
    int i; 

    for (i = 0; i < strlen(string); i++) 
    { 
     if (isalpha(string[i])) 
      printf("%c", string[i]); 

     if (string[i] == ' ') 
      break; 
    } 


} 

int main() 
{ 
#define MAX 100 
    char string[MAX]; 
    printf("Type in a scentence\n"); 
    gets_s(string, MAX); 
    printFirstWord(string); 

    getchar(); 
    return 0; 
} 
+1

Или просто 'void printFirstWord (char string []) {int i; for (i = 0; isalpha (string [i]); i ++) putchar (string [i]); } ' – Dmitri

+1

' gets_s' не хватает параметра. И почему бы не использовать гарантированную доступную функцию 'fgets'? – Olaf

+0

Спасибо, ребята, вы сделали все намного яснее! –

-2

gets() используется для ввода ввода, а не для печати.

использовать что-то вроде этого вместо

fgets(string, 100, stdin); 

По существу в функции printFirstWord() вы просто напечатать строку по одному символу за раз.

что-то подобное может работать:

if(string[i]==" ") { 
break; 
} 
+0

'' "' -> '' ''? – BLUEPIXY

+0

if (string [i] == ""): это не будет компилироваться –

+2

Добро пожаловать в Stack Overflow. Обратите внимание, что два других человека (правильно) указали на недостаток в вашем ответе.Вам разрешено и рекомендуется исправить ваш ответ (используйте ссылку «edit» под левым нижним краем ответа). Если вы не исправите это, ваш ответ будет проголосован и удален. –

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