是否可以将 strcpy 与单字符变量一起使用?

109*_*zu_ 2 c sorting c-strings char strcpy

这是我编写的程序中的主要函数,我需要对字符数组进行排序,使这些字符在开头具有偶数 ascii 代码,并且我想显示数组在每次迭代时的排序方式。

\n
#include<stdio.h>\n#include<stdlib.h>\n#include<string.h>\n\n\n int main ()\n { \n    int n, i,j;\n    char echange;\n    printf("array size :  ");\n    scanf("%d", &n);\n    char t[n];\n    for (i=0; i<n; i++)\n    {\n        printf("enter array elements : ");\n        scanf(" %c", &t[i]);\n    }\n\n  \n\n    for (j=0; j<n; j++)\n        for (i=0; i<n; i++)\n    {\n        if ((t[i] % 2!=0) && (t[i+1] % 2 ==0) && (i != n-1))\n           {\n              strcpy(echange, t[i]);\n              strcpy(t[i], t[i+1]);\n              strcpy(t[i+1], echange);\n              printf (" %c (%d)", t[i], t[i]);\n           }\n           else\n           printf(" %c (%d)", &t[i], t[i]);\n\n    }\n\n\n\n\n }\n
Run Code Online (Sandbox Code Playgroud)\n

这个问题通常可以编译,但输出很奇怪:

\n
array size :  3\nenter array elements : d\nenter array elements : f\nenter array elements : g\n2 \xe2\x94\x94 (100) \xe2\x94\xb4 (102) \xe2\x94\xac (103) \xe2\x94\x94 (100) \xe2\x94\xb4 (102) \xe2\x94\xac (103) \xe2\x94\x94 (100) \xe2\x94\xb4 (102) \xe2\x94\xac (103)\nProcess returned 0 (0x0)   execution time : 4.063 s\nPress any key to continue.\n
Run Code Online (Sandbox Code Playgroud)\n

那么我的代码有什么问题吗?以及为什么如何将 strcpy 与单个字符一起使用?顺便说一句,我尝试不使用 strcpy 函数:

\n
echange = t[i];\n          t[i] = t[i+1];\n          t[i+1] = echange;\n
Run Code Online (Sandbox Code Playgroud)\n

它也不起作用

\n

dbu*_*ush 6

strcpy函数用于将空终止字符串从一个char数组复制到另一个数组。您所做的是复制单个字符,因此您将无效参数传递给函数,从而触发未定义的行为

对于单个字符,您可以直接分配给它们。

  echange = t[i];
  t[i] = t[i+1];
  t[i+1] = echange;
Run Code Online (Sandbox Code Playgroud)