【问题标题】:What is the proper format for defining and printing string variables in C?在 C 中定义和打印字符串变量的正确格式是什么?
【发布时间】:2014-01-04 19:24:18
【问题描述】:

我是 C 的绝对初学者,我对 Ruby 和 Python 等其他高级语言有一些经验,但除此之外,我也是一般编程的初学者。我一直在试图弄清楚如何定义一个字符串变量并使用类似“printf”函数的东西打印它,但到目前为止我没有运气,因为我的代码只是不断地吐出错误消息。

据我了解,这样的东西应该定义一个字符串变量,然后将其打印到控制台:

char string[3];
string = "hi";
printf ("%s", string);

但这不起作用,那么正确的方法是什么?

【问题讨论】:

  • “不起作用”作为问题描述完全没有用。始终包含您遇到的错误(与您看到的完全一样)。

标签: c string variables printf


【解决方案1】:

这不起作用,因为您不能在 C 中分配给数组,除非在初始化它们时。

所以,你可以这样做:

char string[3] = "hi";

哪个更好(更安全)写成:

char string[] = "hi";

这让编译器担心字符数,通常更可取。

要在初始化后改变数组内容,你必须使用一些可以复制字符的函数,你不能用一个赋值来做到这一点:

strcpy(string, "yo");

请注意,这是危险,因为strcpy() 不会知道数组的 3 个字符限制。

【讨论】:

  • 有没有更安全的功能可以使用?还是只需要在重新定义变量时小心谨慎?
  • 值得一提的是,还将字符串文字分配给指针,我怀疑这就是他的意思
  • @nattinthehat 有一个称为 strncpy 的函数(注意“n”),它接受第三个参数“N”并将复制“最多 N”个字符您可以像这样使用它strncpy(string, "yo", 3)。但是,请注意以字符串结尾的空字节。 strncpy 不会为你检查它。
猜你喜欢
  • 2017-12-15
  • 2012-09-13
  • 1970-01-01
  • 2012-12-12
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多