如何解决在没有库函数的情况下反转字符串
代码编译成功。 但我不能扭转字符串。 由于我是一个初级程序员,我无法真正弄清楚我犯的错误。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int temp,i,j,length;
char name[20],name1[20];
printf(" Enter string \n");
scanf("%s",name);
length = strlen(name);
printf(" %d",length);
for (i = length - 1; i >= 0; i--) {
name1[length - i] = name[i];
}
printf("%S ",name1);
return 0;
}
解决方法
在打印中使用小写“s”:
printf("%s ",name1);
类似代码:https://www.programmingsimplified.com/c-program-reverse-string
,我注意到的问题:
-
ClassNotFound
将在此处 +1 关闭:length-i
- 您忘记添加空终止符 (
name1[length-i]=name[i];
)。 -
\0
是一个非标准的%S
格式化程序。你可能想要printf
。
建议更改:
%s
,
你可以试试这个:-
apiVersion: samplecontroller.k8s.io/v1alpha1
kind: VM
metadata:
name: sample
spec:
vmname: test-1
status:
vmId: 1234-567-8910
cpuUtilization: 50
,
以下是您代码中的一些问题:
-
您应该使用
name
限制存储在%19s
中的字符数。 -
name1[length - i] = name[i];
没有使用正确的偏移量。尝试第一次迭代:i
是length-1
您将最后一个字符复制到位置length - (length - 1)
因此位置1
而不是0
。改用这个:name1[length - i - 1] = name[i];
-
您必须在反转字符串的末尾设置一个空终止符:
name1[length] = '\0';
-
在
printf()
调用中,%S
不正确。改用%s
并附加换行符。
这是修改后的版本:
#include <stdio.h>
int main() {
char name[20],name1[20];
int i,length;
printf(" Enter string:\n");
if (scanf("%19s",name) == 1) {
length = strlen(name);
printf("%d\n",length);
for (i = 0; i < length; i++) {
name1[length - i - 1] = name[i];
}
name1[length] = '\0';
printf("%s\n",name1);
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。