如何为字符串数组赋值?

时间:2010-11-07 06:00:18

标签: c string

例如

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

char substr[10][20];

int main() {
    substr[0] = "abc";

    printf("%d", substr[0]);
}

当然上面是错的?怎么做?感谢

3 个答案:

答案 0 :(得分:4)

您不能在C中分配类似的字符串。相反,请使用strcpy(substr[0], "abc")。另外,在%s

中使用%d而不是printf

答案 1 :(得分:3)

我讨厌给作业问题提供“完整”答案,但回答问题的唯一方法就是向你展示问题的答案,因为它是如此基本:

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

#define MAXLEN 20

char substr[10][MAXLEN];

int main(void) {
        strncpy(substr[0], "abc", MAXLEN);
        puts(substr[0]);
        return 0;
}

您的代码(按原样)有几个错误:

  • 您将substr[0]视为字符串文字。你不能这样做。
  • 您错误地使用了printf格式化程序。 %s用于字符串
  • 你不需要来打扰printf()打印字符串
  • 您应该(在实际代码中)注意缓冲区溢出,因此strncpy()
  • 如果main()不需要/ argcargv,则其参数应为void
  • main()应返回一个值,因为其返回类型为int
  • 您没有使用<stdlib.h>以外的任何内容,为什么要包括它?

我建议研究字符串文字,<string.h>中可用的函数以及格式说明符。

另请注意,我 没有检查strncpy() 的返回,这是您应该做的事情。这留给读者练习。

答案 2 :(得分:0)

希望这会有所帮助:

void main(void)
{
    char* string[10];
    string[0] = "Hello";
}

否则我认为您需要手动复制或使用strcpy等将其从一个内存块移动到另一个内存块。