求助 程序为什么会有时候运行报错有时候可以正常运行
#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;
}
#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]