|

楼主 |
发表于 2019-12-4 13:28:02
|
显示全部楼层
不太明白那道题为什么要记录地址。不记录地址,用指针顺序访问的时候出错了。
这个是我当时写得代码,就是得不到准确答案,但也不知道错在哪
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX 1024
- int main(void)
- {
- char string[MAX];
- char* stringP = string;
- int len = 0;
- int space_count = 0;
- int max_len = 0, word_len = 0;
-
- printf("请输入一个英文句子:");
-
- while((string[len++] = getchar()) != '\n');
- string[len-1] = '\0';//关键点!!!!!!!!!!!!!!!!!!
-
- //计算空格数
- for(int i = 0; i < len; i++)
- {
- if(string[i] == ' ' || string[i] == '\0')
- {
- space_count++;
- while(string[i++] != ' ');
- max_len = (max_len > word_len)? max_len : word_len;
- word_len = 0;
- }
- else
- {
- word_len++;
- }
- }
- printf("分割的结果存放到result[%d][%d]的二维数组中\n", space_count, max_len);
-
- char(*matrix)[max_len] = (char(*)[max_len])malloc(sizeof(char) * space_count * (max_len+1));
- //存放数组中
- for(int i = 0; i < space_count; i++)
- {
- for(int j = 0; j < max_len+1; j++)//这里面列加1因为要存储'\0'
- {
- if(*stringP != ' ' && *stringP != '\0')
- {
- matrix[i][j] = *stringP++;
- continue;
- }
- else if(*stringP == ' ')
- {
- matrix[i][j] = '\0';
- //指针指向下一个不为空的
- while(*stringP++ != ' ');
- break;
- }
- else if(*stringP == '\0')
- {
- matrix[i][j] = '\0';
- break;
- }
- }
- matrix[i][max_len] = '\0';
- }
-
- //计算最大字符串的长度
- printf("打印二维数组中的数据:\n");
-
- for(int i = 0; i < space_count; i++)
- {
- for(int j = 0; j < max_len; j++)
- {
- printf("%c", matrix[i][j]);
- }
- printf("\n");
- }
-
- return 0;
- }
复制代码 |
|