Скажем, у меня есть текстовый файл с несколькими именами и соответствующими днями рождения, например:
Джон Доу 2 34
Лорен Доу 3 4
Альберт р. Грифтон 03 12
Программа-конвертер создаст имена пользователей для учеников, такие как:
jd0234
ld0304
arg0312
Проблема, с которой я столкнулся, - это добавление нулей для условий if / else для нечетного количества дней рождения.
Пока моя программа стоит, она печатает:
jd234
ld34
arg0312
Я знаю, что есть 3 случая.
- Если есть 3 цифры, добавьте ноль.
- Если есть 2 цифры, добавьте два нуля.
- Если есть 4 цифры, все хорошо.
Я знаю, как соответствующим образом отформатировать строку с помощью printf ("% 02d, num). Хотя я не думаю, что это необходимо для моей цели, поскольку эта программа работает с другой, использующей каналы.
// converter.c
//
#include <string.h>
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char line[512];
while(!feof(stdin))
{
if((fgets(line, sizeof(line), stdin) != 0))
{
char name[16];
char *dst = name;
char *end = name + sizeof(name) - 1;
char *src = line;
while (*src != '\0')
{
char c;
while ((c = *src++) != '\0' && isspace(c)){}
if (isalpha(c))
{
if (dst < end)
*dst++ = tolower(c);
while ((c = *src++) != '\0' && !isspace(c)){}
}
else if (isdigit(c))
{
//birthdays are evaluated here
while (dst < end && isdigit(c))
{
*dst++ = c;
c = *src++;
}
}
}
*dst = '\0';
puts(name);
fflush(stdout);
}
}
return 0;
}