我是C的新手,我对C字符串非常困惑.以下是我的问题.
从字符串中查找最后一个字符
如何找出字符串中的最后一个字符?我带来了类似的东西,
char *str = "hello";
printf("%c", str[strlen(str) - 1]);
return 0;
Run Code Online (Sandbox Code Playgroud)
这是要走的路吗?我不知何故认为,这不是正确的方法,因为strlen必须迭代字符才能获得长度.所以这个操作会有一个O(n)复杂性.
转换char为char*
我有一个字符串,需要附加一个字符.我怎样才能做到这一点?strcat只接受char*.我试过以下,
char delimiter = ',';
char text[6];
strcpy(text, "hello");
strcat(text, delimiter);
Run Code Online (Sandbox Code Playgroud)
运用 strcat具有局部范围的变量
请考虑以下代码,
void foo(char *output)
{
char *delimiter = ',';
strcpy(output, "hello");
strcat(output, delimiter);
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,delimiter是一个在foo返回后被销毁的局部变量.可以将它附加到变量上output吗?
怎么样 strcat处理null终止字符?
如果我连接两个空终止字符串,将会 strcat两个空终止字符附加到结果字符串?
是否有一篇很好的初学者水平文章解释了字符串如何在C中工作以及如何执行常用的字符串操作?
任何帮助都会很棒!
最后一个字符:你的方法是正确的.如果您需要在大字符串上执行此操作,则包含字符串的数据结构应与它们存储长度.如果不是,那就是O(n)并不重要.
附加一个字符:你有几个错误.首先,你的缓冲区太小而无法容纳另一个角色.至于如何调用strcat,你可以将字符放在一个字符串中(一个包含2个条目的数组,第二个为0),或者你可以手动使用长度将字符写入结尾.
您对2个终止符的担心是没有根据的.虽然它占用与字符串连续的内存并且是必要的,但是在长度意义上,结尾处的nul字节不是"字符串的一部分"等等.它纯粹是结束的标记.strcat将覆盖旧的nul并在连接字符串之后在最后添加一个新的nul.同样,在调用strcat之前,需要确保缓冲区足够大!