QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 949|回复: 5

高手的难题

[复制链接]
发表于 2003-3-26 16:29:16 | 显示全部楼层 |阅读模式
做这样一个功能:用户打回车就把前面的所有打的字符串赋给各个指针数组,字符串间以空格间隔;

程序代码:
#include <stdio.h>
#include <string.h>
int main()
{
int i;
char* x[2];//我这里只定义了两个指针数组;
char y[]="\n";
x[0]="a";

for(i=0;(strcmp(x,y))!=0;i++)//与回车比较,如果是回车则退出循环
{
scanf("%s",x);//scanf如果遇到空格那么后面一个自然会被赋予之后的指针数组,我是这么想的,只到回车退出
}
for(i=0;(strcmp(x,y))!=0;i++)
{
puts(x);
}
return 0;
}

如果哪位高手可以写出同样的功能,同样不甚感激
以上代码有些问题,希望能够有谁看一下怎么修改,和哪里有出入,或者其他解题思想
发表于 2003-3-26 18:10:08 | 显示全部楼层
感觉你这程序有问题:没有给指针分配空间就使用,这样的是危险的事情。
另外,strcmp(x,y))!=0是不是应该是strcmp(x,y))!='\0'呢?
回复

使用道具 举报

 楼主| 发表于 2003-3-27 00:32:07 | 显示全部楼层
strcmp(x,y))!='\0'  //肯定是错误的strcmp()不可能返回'\0'
我还有一种做法,但是没有通过,能否劳驾一试,万分感谢!


#include <stdio.h>
#include <string.h>
int main()
{
        int i=0,j=0;
        char h='d';
        char a[50];
        char x[2][5];
        char* p;
       
        gets(a);
        p=strchr(a,h);
        while(*p!='\0')
        {
                x[j]=*(p++);
                j++;
                if(*p==' ')
                {
                        while(*p==' ')
                        {
                                ++p;
                        }
                        i=1;
                        j=0;
                }
        }

        printf("%s",x[0],x[1]);
        return 0;
}
回复

使用道具 举报

发表于 2003-3-28 10:30:39 | 显示全部楼层
[code:1]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int
main(void)
{
  char **x = NULL;
  char s[1024], *t;
  int xn = 10, n = 0, i;

  printf("Please enter a string: ");
  fgets(s, 1024, stdin);
  s[strlen(s) - 1] = '\0';

  x = (char **)realloc(x, xn * sizeof(*x));
  t = strtok(s, " ");
  while(t){
    if(n >= xn){
      xn += 10;
      x = (char **)realloc(x, xn * sizeof(*x));
    }
    x[n++] = t;
    t = strtok(NULL, " ");
  }

  printf("\nEnter string:\n");
  for(i = 0; i < n; i++)
    printf("  %s\n", x[i]);

  free(x);
  exit(0);
}
[/code:1]
回复

使用道具 举报

发表于 2003-3-29 11:38:17 | 显示全部楼层
[code:1]
#include <stdio.h>

#define MAXLINE 1024

int
main(void)
{
  char c, s[MAXLINE];
  int i = 0;

  while((c = getchar()) != EOF){
    if(isspace(c)){
      if(i > 0){
        s[i] = '\0';
        printf("%s\n", s);
        i = 0;
      }
    }else{
      s[i++] = c;
      if(i == MAXLINE){
        s[i] = '\0';
        printf("%s", s);
        i = 0;
      }
    }
  }

  if(i > 0){
    s[i] = '\0';
    printf("%s\n", s);
    i = 0;
  }

  exit(0);
}
[/code:1]
回复

使用道具 举报

发表于 2003-3-29 11:46:14 | 显示全部楼层
strcmp(x,y))!='\0'???呵呵,基础问题哟
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-16 07:01 , Processed in 0.037439 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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