鱼C论坛

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

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

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

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

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

x
#include <stdio.h>

#define MAX 128

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

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

        }

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

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

        for (j = i ; j > 0 ; j--)
        {
                p++;
                if (*(p) == ' ')
                {        
                        p++;
                        p1[word++] = p;                        //存放每个单词的首字母的地址
                }
        }

        for (i = 0 ; i < word ; i++)
        {
                for (j = 0 ; *(*(p1 + i) + j) != ' ' ; j++)
                {
                        q[i][j] = p1[i][j];                //将每个单词存放到维数组上
                }
        }
        q[i][j] = '\0';

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

        


        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

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

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

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

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

        char* temp = p;
        while (str[j] != '\0') {
                if (str[j] == ' ' ) {
                        *p = '\0';
                        if (strlen(temp) !=0){
                                printf("%s\n", temp);
                        }
                        temp = (p + 1);

                }
                p++;
                j++;

        }
        printf("%s\n", temp);
        return 0;
}
下半部分我按照我的理解写了一份
你的代码里面有一个问题是,当你是a  b  c 两个空格的时候,你处理起来或许就不是很合理了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-10 16:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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