如何给字符串数组赋值?

3
例如
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char substr[10][20];

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

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

当然,上述方法是错误的?如何解决它?谢谢。
3个回答

4

在C中,你不能像那样赋值字符串。相反,使用strcpy(substr[0], "abc")来赋值。另外,在printf中要使用%s而不是%d


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() 的返回值,这是你应该做的事情。这留给读者作为练习。


0
希望这能帮到你:
void main(void)
{
    char* string[10];
    string[0] = "Hello";
}

否则我认为你需要手动复制它,或者使用strcpy或类似的方法将其从一个内存块移动到另一个内存块。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接