簡體   English   中英

返回值不返回

[英]Return value don't return

我寫了一個word_pattern函數,如下所示。

我沒有得到返回值,代碼有什么問題?

以下是codewars培訓。( https://www.codewars.com/kata/5f3142b3a28d9b002ef58f5e/train/c

#include <stdlib.h>
#include <string.h> //strlen
#include <ctype.h> //islower

char *word_pattern(const char *word) {
  int i, j;
  int size = strlen(word) ;
  char *ans = (char*)malloc(sizeof(char) * (size * 2 ));

  char *base = ans;

  if (ans == NULL)
  {
    return NULL;
  }

  for (i = 0; i < size; i++)
  {
    if (i == 0)
    {
      *ans++ = (char)i;
      *ans++ = '.';
      /*break;*/ continue;
    }

    for (j = 0; j < i; j++)
    {
      if ( islower(word[i]) == islower(word[j]) )
      {
        *ans++ = (char)j;
        *ans++ = '.';
        break;
      }
    }
    
    if(j == i)
    {
      *ans++ = (char)i;
      *ans++ = '.';
    }
  }

  *--ans = '\0';
  return base;
}

我沒有得到返回值,代碼有什么問題?

下面的代碼將ans[0]為 0,即空字符

if (i == 0) {
  *ans++ = (char)i;

將返回指針打印為字符串不會打印任何內容,因為字符串會立即結束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM