在c中操作字符数组作为字符串

Raf*_*ole 1 c c++ arrays string

我已经读过将字符串存储在字符数组中(使用null终止)允许稍后操作字符串(与指向字符串文字的指针不同).

#include <stdio.h>
int main()
{
   char s[10]="Stack";
   s[9]='a'; // a gets stored in array and if index is less than 6 string gets changed
   printf("%s\n",s);    
   return 0; 
}
Run Code Online (Sandbox Code Playgroud)

输出:堆叠

只要要操作的索引小于字符串的长度,这就可以工作.

这意味着即使有空的空间也不能改变字符串内容(因此大小)?

有没有直接的方法(不使用函数)在所需的位置添加'a'?

bil*_*llz 6

printf只会在NUL终结符之前打印字符串的字符. 设置时s[9]='a';,s的内容变为:

{'S', 't', 'a', 'c', 'k', '\0', '\0', '\0', '\0', 'a'}
Run Code Online (Sandbox Code Playgroud)

如果你打印s[9],它就在那里:

printf("%c", s[9]);
Run Code Online (Sandbox Code Playgroud)

看看std :: string.