此代码返回n = 11,第10和第11个字符为''和'@'这是如何工作的?strlen函数如何将其视为11个字符?在某些编译器中,似乎需要字符串长度为12个字符.
#include <stdio.h>
#include <string.h>
void fun(char *arr)
{
int i;
unsigned int n = strlen(arr);
printf("n = %d\n", n);
for (i=0; i<n; i++)
printf("%c ", arr[i]);
}
int main()
{
char arr[] = {'g', 'e', 'e', 'k', 's', 'q', 'u', 'i', 'z'};
fun(arr);
return 0;
}
Run Code Online (Sandbox Code Playgroud) # left rotate using slicing
def leftRotate(arr, k, n):
arr = arr[k:] + arr[:k]
print(arr)
arr = [1, 2, 3, 4, 5, 6, 7]
leftRotate(arr, 2, 7)
print(arr)
Run Code Online (Sandbox Code Playgroud)
结果:
[3, 4, 5, 6, 7, 1, 2]
[1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
当我在函数外部打印数组时,它不再旋转,并保持原来的状态.有人能帮助我理解这个吗?
使用printf语句printf("new s3 string (in locate function) is \"%s\" \n",s3),代码可以正常工作
但是当printf("new s3 string (in locate function) is \"%s\" \n",s3)评论时,代码返回null
如何printf影响return价值?
#include <stdio.h>
#include <string.h>
char * locate(char * s1,char * s2,int index)
{
printf("s1 string is \"%s\" \n",s1);
printf("s2 string is \"%s\" \n",s2);
int i=0,j=0, k;
char s3[100];
while(i<=index)
{
s3[i]=s1[i];
i++;
}
k=i;
while(s2[j]!='\0')
{
s3[i]=s2[j];
i++; j++;
}
while(s1[k]!='\0')
{
s3[i]=s1[k];
i++;k++;
}
s3[i]='\0';
//printf("new s3 string (in locate function) …Run Code Online (Sandbox Code Playgroud)