#include<stdlib.h>;
#include<stdio.h>;
#include<string.h>;
#pragma warning (disable:4996);
void*my_str1(char*p)
{
while (*p = '\0')
{
char*q = p;
if (*(p) = 0)
{
while (*q = 0)
{
*q = *(q + 1);
q++;
}
}
p++;
}
printf("%s\n", p);
return;
}
int main()
{
char p[128] = "\0ndlandfa\0ndlanfa\0dn\0alfnla\0\0";
my_str1(p);
printf("%s\n", p);
system("pause");
return 0;
}
char p[128] = "\0ndlandfa\0ndlanfa\0dn\0alfnla\0\0";要求把\0全部移到最后面
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void my_str1(char* p) {
int len = strlen(p); // 获取字符串长度
for (int i = 0; i < len - 1; i++) { // 只需要遍历到倒数第二个字符
if (p[i] == '\0') { // 如果第 i 个字符为 '\0'
for (int j = i; j < len - 1; j++) { // 将第 i+1 到 len-1 个字符向前移动一个位置
p[j] = p[j + 1];
}
p[len - 1] = '\0'; // 将最后一个字符设为 '\0'
i--; // 移动完毕后 i--,相当于再次检查当前位置
}
}
}
int main() {
char p[128] = "\0ndlandfa\0ndlanfa\0dn\0alfnla\0\0";
printf("Before: %s\n", p);
my_str1(p);
printf("After : %s\n", p);
system("pause");
return 0;
}
仅供参考