Mr丶张 发表于 2020-3-17 19:33:57

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

#include <stdio.h>

#define MAX 128

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

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

        }

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

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

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

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

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

       


        return 0;
}


4goodworld 发表于 2020-3-17 22:59:11

#include <stdio.h>
#include <string.h>
#define MAX 128

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

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

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

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

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

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

                }
                p++;
                j++;

        }
        printf("%s\n", temp);
        return 0;
}
下半部分我按照我的理解写了一份
你的代码里面有一个问题是,当你是abc 两个空格的时候,你处理起来或许就不是很合理了
页: [1]
查看完整版本: 求助 程序为什么会有时候运行报错有时候可以正常运行