假设我有一个包含多个姓名及其相应生日的文本文件,例如:
约翰·多伊 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;
}
最佳答案
一旦你对字符串进行了标记,最后两个标记应该用 atoi
解析,然后你将有两个整数。这些可以用 sprintf(%02d, myInt)
打印。
关于c - 如何在c中正确格式化整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2307800/