【问题标题】:Concatenate to an empty String in C?连接到C中的空字符串?
【发布时间】:2014-10-15 02:22:50
【问题描述】:
void decode(char *str, int j)
{
int i;
char s[100]="";
i = strlen(str); 
//Print each uppercase character in the string
if(j<i)
{
    if(isupper(str[j]))
    {
        strcat(&str[j], s);
        j++;
        decode(str, j);
    }
    else
    {
        j++;
        decode(str, j);
    }
}
else
    printf("%s\n", s);  
}

此函数旨在仅打印 str(争论)中的大写字符。但它目前打印出来的只是空白。我对 strcat 的理解显然有问题。我不确定它是否适用于我在顶部声明的 char 数组,例如。即使它被声明为空,它还会附加到它吗?如果我取出 char 数组的空声明,它仍然打印为空。感谢您提供任何帮助。

【问题讨论】:

  • 检查你的论据顺序到strcat
  • @OliverCharlesworth 是对的,查看 strcat 定义:void strcat( char* dest, char* src ) { while (*dest) dest++; while (*dest++ = *src++); }
  • 我用了另一种方式,但由于某种原因,它仍然只打印出空白。

标签: c


【解决方案1】:

如果 j

【讨论】:

  • 遗憾的是,我需要为此使用递归。此外,J 为 0,在 main 中声明,因此在递归调用期间不会重新声明,并且 i 始终大于 0。这只是为了确保它检查字符串中的每个字符。
  • 哦,我明白了!非常感谢我明白我做错了什么。我需要在外面声明另一个字符串,以便在递归期间不会重新声明它。谢谢!
  • 在函数外部声明它并将其作为参数传递后,它会打印整个字符串,而不仅仅是大写。
  • 现在的问题是 strcat 在找到字符串终止符之前不会停止。所以它会复制整个字符串,而不仅仅是一个字符。改用 strncat:strncat(&amp;dest, &amp;source, 1); // Concatenate only 1 char.
猜你喜欢
  • 2016-03-02
  • 2015-01-13
  • 2018-03-06
  • 2013-09-14
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多