|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#define MAX 1024
int main(){
char arr[MAX];
int k;
//输入字符
printf("请输入一串字符:");
scanf("%s",arr);
printf("%s",arr);
int len=sizeof arr/arr[0];
//将字符存入数组
char result[MAX][MAX];
int i=0,j=0;
for(k=0;k<len;k++){
if(arr[k]==' '){
continue;//若为空格跳过 //题目
}else{ //用户输入一个英文句子,你的程序将这个字符串按空格进行分割,返回由单词组成的二维数组。
result[i][j]=arr[k];
j++;
} //这个代码在输出有点问题,空格后的数组内容显示不出来
}
//打印
for(int n=0;n<i;n++){
for(int m=0;m<j;m++){
printf("%c",result[i][j]);
}printf("\n");
}
return 0;
}
你的代码中有几个问题需要解决。下面是修复后的代码:
- #include <stdio.h>
- #include <string.h>
- #define MAX 1024
- int main() {
- char arr[MAX];
- int k;
- // 输入字符
- printf("请输入一串字符:");
- fgets(arr, MAX, stdin); // 使用 fgets 替换 scanf 以处理空格
- int len = strlen(arr);
- // 将字符存入数组
- char result[MAX][MAX];
- int i = 0, j = 0;
- for (k = 0; k < len; k++) {
- if (arr[k] == ' ' || arr[k] == '\n') { // 当遇到空格或换行符时
- result[i][j] = '\0'; // 在当前行添加字符串结束符
- i++; // 移动到下一行
- j = 0; // 将列索引重置为 0
- } else {
- result[i][j] = arr[k];
- j++;
- }
- }
- result[i][j] = '\0'; // 在最后一个单词末尾添加字符串结束符
- // 打印
- for (int n = 0; n <= i; n++) {
- printf("%s\n", result[n]); // 使用 %s 而不是逐字符打印
- }
- return 0;
- }
复制代码
这个修复的代码有以下更改:
1. 使用 fgets() 代替 scanf() 以正确处理包含空格的字符串。
2. 使用 strlen() 计算字符串长度,而不是 sizeof 。
3. 当遇到空格或换行符时,将字符串结束符 \0 添加到当前行,并将行和列索引适当调整。
4. 在打印二维数组时,直接使用 %s 而不是逐字符打印。
|
|