Я новичок в языке программирования C и пытаюсь улучшить его, решая проблемы с веб-сайта Project Euler, используя только C и его стандартные библиотеки.Я рассмотрел основные основы языка Си (я думаю), функции, указатели и некоторые основные операции ввода-вывода файлов, но сейчас сталкиваюсь с некоторыми проблемами.
Вопрос заключается в чтении текстового файла с именами и вычислении «имени».оценка "бла-бла, я знаю алгоритм, который собираюсь использовать, и имею большую часть настроек программы, но просто не могу понять, как правильно читать файл.
Файл имеет формат "Nameone", "Nametwo", "billy", "bobby", "frank" ... Я искал и искал и пробовал бесчисленные вещи, но не могу прочитать их какотдельные имена в массив строк (я думаю, это правильный способ хранить их по отдельности?) Я попытался использовать sscanf / fscanf с% [^ \ ",]. Я пробовал разные комбинации этих функций и fgets, но мое пониманиеиз fgets каждый раз, когда я его называю, он получает новую строку, и это текстовый файл, содержащий более 45 000 символов в одной строке.
Я не уверен, что у меня возникнут проблемы с неправильным пониманиемфункции scanf, или мое недоразумение с сохранением массива строк. Что касается массива строк, я (думаю) осознал, что когда я объявляю массив строк, он не выделяет память для самих строк, то, что янужно сделать. Но я все еще не могу заставить что-либо работать.
Вот код, который я сейчас пытаюсь просто прочитать под некоторыми именами, которые яnter из командной строки, чтобы проверить мои методы.
Этот код работает для ввода любой строки до размера буфера (100):
int main(void)
{
int i;
char input[100];
char* names[10];
printf("\nEnter up to 10 names\nEnter an empty string to terminate input: \n");
for(int i = 0; i < 10; i++)
{
int length = 0;
printf("%d: ", i);
fgets(input, 100, stdin);
length = (int)strlen(input);
input[length-1] = 0; // Delete newline character
length--;
if(length < 1)
{
break;
}
names[i] = malloc(length+1);
assert(names[i] != NULL);
strcpy(names[i], input);
}
}
Однако я просто не могу заставить эту работу читатьв отформатированных строках.
ПОЖАЛУЙСТА, посоветуйте мне, как читать в формате.Ранее я использовал sscanf во входном буфере, и это работало нормально, но я не чувствую, что могу сделать это на 45000+ символьных строках?Я прав, предполагая это?Является ли это даже приемлемым способом чтения строк в массив?
Я извиняюсь, если это долго и / или неясно, очень поздно, и я очень расстроен.
Спасибо всем ивсем за помощь, и я с нетерпением жду, чтобы наконец стать активным участником на этом сайте!