【问题标题】:Can't initialize array of strings and use them无法初始化字符串数组并使用它们
【发布时间】:2013-03-11 08:18:35
【问题描述】:

这是在主要之外:

char message_ecran[NUMBER_OF_STRINGS][STRING_LENGTH+1];

这是我的功能

 int main(void)
    {
        Init(); 

        int i;
        char texte7[] = "io";

        for (i=0;i<=NUMBER_OF_STRINGS;i++)
            {
            message_ecran[i] = texte7;
            }
    }

我想要一个字符串数组message_ecran,但它不起作用:

incompatible types in assignment

【问题讨论】:

  • 你不能在 C 中这样做。使用strcpy_s 代替你的赋值运算符。
  • @AnishRam: strcpy_s 不是 C 标准库的一部分。请改用strncpy
  • @Zeta,好点子。我不知道。想想看,memsetmemcpy 会不会更好?
  • 您应该将 for 循环的 i &lt;= NUMBER_OF_STRINGS 条件更改为 i &lt; NUMBER...
  • @AnishRam:嗯,不。 memcpy 是一种通用的复制算法,而 strncpy 将在 \0 或已复制指定数量的字符时停止 (strncpy = str ing (n i> 个字符) c o py)

标签: c string matrix


【解决方案1】:

strcpy(),在你的程序中实现。

#include <string.h>
#include <stdio.h>

#define NUMBER_OF_STRINGS 3
#define STRING_LENGTH 80

char message_ecran[NUMBER_OF_STRINGS][STRING_LENGTH+1];

int main(void)
{
    int i;
    char texte7[] = "io";

    for (i=0;i<=NUMBER_OF_STRINGS;i++)
    { 
        strcpy(message_ecran[i],texte7);
        puts(message_ecran[i]);
    }
}

【讨论】:

    【解决方案2】:

    您必须使用 strcpy 来复制字符串,分配将不起作用。 替换

    message_ecran[i] = texte7;
    

    strcpy(message_ecran[i], texte7);
    

    【讨论】:

      【解决方案3】:

      你现在做的操作是指针的赋值。

      你不能简单地将一个字符串分配给另一个,你必须strcpy()才能真正复制数据。

      strcpy(message_ecran[i], texte7);
      

      您还必须确保在message_ecran[i] 中为您尝试复制的字符串分配了足够的内存。否则,您将损坏数据。

      编辑:

      您可以检查以下内容:

      if(strlen(texte7) < STRING_LENGTH+1)
      

      或者你可以简单地使用以下函数:

      char * strncpy ( char * destination, const char * source, size_t num );
      
      strncpy(message_ecran[i], texte7, STRING_LENGTH);
      

      【讨论】:

      • 我应该如何确保分配的内存足够?
      【解决方案4】:

      使用 strcpy(destination,source) 并尝试

      【讨论】:

        猜你喜欢
        • 2020-04-21
        • 2021-05-10
        • 2017-01-04
        • 2011-12-11
        • 1970-01-01
        • 2017-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多