c - 在字符串中分别打印偶数奇数字符
问题描述
这是我尝试过的代码,
我必须从用户那里获取一个字符串,作为输出,我必须在偶数位置和用空格分隔的奇数位置打印字符
我的问题:在每个测试用例中,我都在结尾处为两个字符串分配了一个空字符,以得出我的字符串已经结束的结论。假设我输入了 2 个测试用例,现在如果输入一个比第一个测试用例小的字符串,它正在打印我的第二个测试用例的字符,但也打印测试用例的字符,因为第一个字符串大于第二个
我想问一下,如果我在每个测试用例中都以空字符结束字符串,怎么可能?
那么为什么它在空字符之后打印值,因为那是先前测试用例的字符,因为该字符串更大并且它的字符仍然存在于数组中但它应该打印到空字符请帮助我实现这一点。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int t,i,j,k;
scanf("%d ",&t);
while(t>0){
char s[10000],s1[10000],s2[100000];
scanf("%s",s);
for( i=0,j=0,k=0;i<strlen(s);i++){
if(i%2==0)
s1[j++]=s[i];
else
s2[k++]=s[i];
}
s1[strlen(s1)]='\0';
s2[strlen(s2)]='\0';
printf("%s %s\n",s1,s2);
t--;
}
}
解决方案
s1[strlen(s1)]='\0';
s2[strlen(s2)]='\0';
这条线是错误的。将其替换为
s1[j]='\0';
s2[k]='\0';
这是因为strlen()
仅适用于签null
入null
终止的字符串。此时您生成的字符串尚未null
终止。
推荐阅读
- android - 如何根据 Google 的 2019 年新图标规范在 Phonegap / Cordova 中实现应用程序图标?
- vb.net - 简化 vb.net 中的列表初始化
- javascript - 如何使用 jest 函数发送响应?它给出了异步回调错误
- node.js - 解析/node_modules/opencv4nodejs/build/Release/opencv4nodejs.node时node.js Browserify意外的字符'�'(1:0)
- sorting - ag-Grid 如何防止默认排序和过滤?
- node.js - 如何在 Ubuntu 18.04 32 位上安装 node.js?
- html - 如何在 django 中提供图像而不在 django 中使用标签?
- database - 如何查看连接到oracle数据库的用户和应用程序的日志?
- curl - 无法使用 wget 或 curl 身份验证下载
- php - 如何获取 SimpleXmlElement 属性的值?