Мне нужна простая функция, которая может читать несколько слов в строке в C, вроде как Scanner.nextLine()
в Java или Console.ReadLine()
в C#, но я не могу найти простой способ в любом месте, Я пробовал всевозможные вещи, но никто из них, похоже, работает в 100% случаев.scanf() несколько слов в C
ответ
Это удаляет «\ п» символ, который включен в строки, возвращаемой fgets, что делает функцию практически эквивалентно функций, присутствующих в популярных управляемых языках:
//gets a line from the specified stream
int getline(char* charArray, int maxLength, FILE* stream) {
int i;
if (fgets(charArray, maxLength, stream) == NULL)
return 1; //some error occurred
for (i = 0; i < maxLength; i++) {
if (charArray[i] == '\n') {
if (i != 0 && charArray[i - 1] == '\r') //cater for windows line endings
i--;
charArray[i] = '\0';
return 0; //all's well that ends well
} else if (charArray[i] == '\0')
return 0; //smooth sailing fam
}
return 2; //there was no string terminator
}
Исправлена какая-то логистика, каковы реакции на фиксированную версию? –
Я бы рекомендовал заменить 'for'-loop на' strchr() '. – EOF
Здесь вы идете:
#include "stdio.h"
//gets a line from the specified stream
int getline(char* charArray, int maxLength, FILE* stream) {
int i;
if (fgets(charArray, maxLength, stream) == NULL)
return 1; //some error occurred
for (i = 0; i < maxLength; i++) {
if (charArray[i] == '\n') {
if (i != 0 && charArray[i - 1] == '\r') //cater for windows line endings
i--;
charArray[i] = '\0';
return 0; //all's well that ends well
} else if (charArray[i] == '\0')
return 0; //smooth sailing fam
}
return 2; //there was no string terminator
}
int main() {
char money[4];
printf("How much money do you have on you? ");
getline(money, 4, stdin);
printf("Oh really? $%d? Good. :)\n", atoi(money));
char string[4];
printf("Where is our next lesson?\n");
getline(string, 4, stdin);
printf("%s", string);
return 0;
}
В чем именно смысл этого? – Haris
Что ты думаешь? –
Вы можете использовать fgets
char *fgets(char *str, int n, FILE *stream)
Имейте в виду, что fgets читает, пока не достигнет размера п, или символ новой строки или EOF. Это сделано для предотвращения переполнения буфера, поэтому вам нужно убедиться, что ваш буфер достаточно велик, чтобы сохранить строку.
Спасибо, fgets (charArray, length, stdin) работал красиво. :) –
scanf
является то, что вы хотите:
#include <stdio.h>
int main(void)
{
char string[50];
scanf(" %49[^\n]s",string);
printf("you entered: %s\n",string);
}
Вы можете следить за этим:
char str[100];// as length of the total words neded
fgets(str,100,stdin)
printf("output: %s",str);
return 0;
Используйте fgets для разбора входной строки в буфер полукокса.
char * fgets (char * str, int num, FILE * stream);
Here is the link for a better description
Затем используйте sscanf препарировать эту строку, как вам это нужно.
int sscanf (const char * s, const char * format, ...);
- 1. Несколько слов в строке C
- 2. C Программирование - получить несколько слов в строке
- 3. C Программирование ScanF несколько входных файлов
- 4. C: do-while с scanf, несколько вводов
- 5. C# Речь: распознать несколько слов?
- 6. Как читать несколько слов в строке в C?
- 7. scanf получить сразу несколько значений
- 8. Символ Scanf в C
- 9. C Scanf в цикле
- 10. Понимание scanf в C
- 11. Поведение scanf() в C++
- 12. C++ вводит несколько слов в строку
- 13. C программа: ошибка преобразования в несколько слов
- 14. scanf() не принимает несколько входов
- 15. Несколько входных форматов с scanf
- 16. Несколько scanf в программе, вызывающей сбой в c?
- 17. Sublimetext2 заменить несколько слов на несколько слов
- 18. Какова механика scanf() в C
- 19. C: scanf и строки
- 20. Какова цель помещения пространства в scanf, такого как scanf («% c», & ch) вместо scanf («% c», & ch)?
- 21. Несколько разделителей (слов) в vba
- 22. Несколько scanf с одного входа
- 23. mod_rewrite исключить несколько слов
- 24. Как фильтровать несколько слов C# Entity Framework
- 25. C# Содержит несколько слов не вместе
- 26. scanf в Borland C++ Builder
- 27. Scanf непрерывный вход в C
- 28. Переполнение текста Scanf в C
- 29. Scanf не работает в C
- 30. пропуская петли scanf в c
'fgets()' предоставит ваши пожелания. – Haris