本帖最后由 jackz007 于 2022-10-6 11:58 编辑
第11行应该是: while((ch=getchar())!='\n')
这是我写的代码版本,谨供楼主参考#include<stdio.h>
int main()
{
char ch , a[1024] ;
int i , j , k , m , n ;
printf("请输入一个英文句子:") ;
for(i = m = 0 , j = n = 1 ; (ch = getchar()) != '\n' ;) {
if(ch != ' ') {
if(j == 1) m ++ ;
a[i ++] = ch ;
a[i] = '\0' ;
j ++ ;
if(j > n) n = j ;
} else {
if(j > 1) { // 只有字符串之间的单个空格有效
j = 1 ;
i ++ ; // 保护上个字符串末尾的 '\0'
}
}
}
char result[m][n] ;
for(i = k = 0 ; i < m ; i ++) for(j = 0 ; (result[i][j ++] = a[k ++]) ;) ; // 这里绝不可以只是简单地按照每个字符串 n 个字符进行分割和复制
printf("分割结果已存放到result[%d][%d]的二维数组中。。。。。\n" , m , n) ;
printf("现在依次打印每个单词:\n") ;
for(k = 0 ; k < m ; k ++) printf("%s\n" , result[k]) ;
}
编译、运行实况:D:\[00.Exerciese.2022]\C>g++ -o x x.c
D:\[00.Exerciese.2022]\C>x
请输入一个英文句子: I am a disco danncer!
分割结果已存放到result[5][9]的二维数组中。。。。。
现在依次打印每个单词:
I
am
a
disco
danncer!
D:\[00.Exerciese.2022]\C>
|