将旧字符串修改为文件

时间:2017-04-27 01:59:24

标签: c

假设我的生日在{/ p>的某个文件中写为04251993

我想将其格式化为04/25/1993

我假设我应该创建一个空字符串,或者将旧字符串修改为新字符串。

我不太清楚如何做到这一点:在编写函数时需要一些帮助。  我是这样开始的。

前两个角色需要是一个带有斜线的月份,另外两个带有斜线的角色,然后是最后4个角色来推出年份。

void timef(char str[]){
printf("%c, str[0]) ?

3 个答案:

答案 0 :(得分:0)

在堆上创建一个足够大的字符数组。然后通过 字符并插入斜杠。使用fput将其放在文件中。重复。

答案 1 :(得分:0)

您可以编写一般函数或仅在集合范围内执行操作的函数。对于这个答案,让我们只研究后者。这意味着,我假设你的字符串总是9个字符的固定大小(包括' \ 0'),数据的打包是" mm / dd / yyyy" 。 从那里,您只需要确定新字符串需要多大,以及原始字符串+ 2字符,因此您需要一个包含11个字符的新数组。

char newDate[11] = ""; 

然后,您需要循环遍历原始字符串数组的内容,并将每个字符放入新数组中,以及随时添加斜杠。所以像这样:

int main()
{
  int newSize = 11;
  char oldDate[9] = "04231993";
  char newDate[11] = ""; 

  for(int i = 0, j = 0; i < newSize && j < oldSize; i++, j++){
    if(i == 2){
       newDate[i] = '/';
       i++;
      }
    if(i == 5){
      newDate[i] = '/';
      i++;
    }
    newDate[i] = oldDate[j];
  }
  printf("%s", newDate);
}

这真的很简单,只是为了说明基本概念。我建议您使用自己的,更强大的版本。

答案 2 :(得分:0)

使用"%.*s"扫描原始字符串,然后写入新字符串

const char *src = "04251993";
char dest[11];
if (strlen(src) >= 8) {
  sprintf(dest, "%.2s/%.2s/%.4s", src, src + 2, src + 4);
}