鱼C论坛

 找回密码
 立即注册
查看: 2130|回复: 1

求助 程序为什么会有时候运行报错有时候可以正常运行

[复制链接]
发表于 2020-3-17 19:33:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>

  2. #define MAX 128

  3. int main(void)
  4. {
  5.         char str[MAX] = {0};                        //存放用户输入
  6.         char *p = str;                                //指向用户输入
  7.         char q[MAX][MAX] = {0};
  8.         char *p1[MAX] = {0};
  9.         int i , j = 0;
  10.         int word = 0 , count  = 0 , k = 0;        //word 记录有多少个单词 count记录有多少个字符
  11.        
  12.         printf("请输入一个英文句子:");

  13.         for (i = 0 ; (str[i] = getchar()) != '\n'; i++)  //获取用户输入
  14.         {
  15.                
  16.                 count++;                                //记录有多少个字母
  17.                 if (*(p + i) == ' ')
  18.                 {
  19.                         count--;                        //如果有空格则减去
  20.                 }

  21.         }

  22.         str[i] = '\0';                                        //将最后的\n 转换为 \0
  23.        

  24.         p1[word++] = p;                                //记录第一个单词的首字母的位置

  25.         for (j = i ; j > 0 ; j--)
  26.         {
  27.                 p++;
  28.                 if (*(p) == ' ')
  29.                 {       
  30.                         p++;
  31.                         p1[word++] = p;                        //存放每个单词的首字母的地址
  32.                 }
  33.         }

  34.         for (i = 0 ; i < word ; i++)
  35.         {
  36.                 for (j = 0 ; *(*(p1 + i) + j) != ' ' ; j++)
  37.                 {
  38.                         q[i][j] = p1[i][j];                //将每个单词存放到维数组上
  39.                 }
  40.         }
  41.         q[i][j] = '\0';

  42.         for (i = 0 ; i < word ; i++)
  43.         {
  44.                 printf("%s\n",q[i]);                        //将每个单词打印出来
  45.         }

  46.        


  47.         return 0;
  48. }


复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-17 22:59:11 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define MAX 128

  4. int main(void)
  5. {
  6.         char str[MAX] = { 0 };                        //存放用户输入
  7.         char *p = str;                               //指向用户输入                               
  8.         char q[MAX][MAX] = { 0 };
  9.         char *p1[MAX] = { 0 };
  10.         int i, j = 0;
  11.         int word = 0, count = 0, k = 0;        //word 记录有多少个单词 count记录有多少个字符

  12.         printf("请输入一个英文句子:\n");

  13.         for (i = 0; (str[i] = getchar()) != '\n'; i++)  //获取用户输入
  14.         {

  15.                 count++;                                //记录有多少个字母
  16.                 if (*(p + i) == ' ')
  17.                 {
  18.                         count--;                        //如果有空格则减去
  19.                 }

  20.         }
  21.         str[i] = '\0';                                        //将最后的\n 转换为 \0

  22.         char* temp = p;
  23.         while (str[j] != '\0') {
  24.                 if (str[j] == ' ' ) {
  25.                         *p = '\0';
  26.                         if (strlen(temp) !=0){
  27.                                 printf("%s\n", temp);
  28.                         }
  29.                         temp = (p + 1);

  30.                 }
  31.                 p++;
  32.                 j++;

  33.         }
  34.         printf("%s\n", temp);
  35.         return 0;
  36. }
复制代码

下半部分我按照我的理解写了一份
你的代码里面有一个问题是,当你是a  b  c 两个空格的时候,你处理起来或许就不是很合理了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-4 23:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表