鱼C论坛

 找回密码
 立即注册
查看: 4441|回复: 15

字符串的输入

[复制链接]
发表于 2013-12-5 21:49:07 | 显示全部楼层 |阅读模式

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

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

x
情况是这样的,题目要求:输入两行字符串,第一行“in:”开头,第二行,以“pre:”开头。
   我就scanf("in:%spre:%s", in, pre);

结果运行错误(我的运行):

in:bfdaegc(我才输入一行就完了,gcc就报下面的错误)
段错误 (核心已转储)


求解释,我该咋办?谢谢!

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

使用道具 举报

 楼主| 发表于 2013-12-6 10:37:51 | 显示全部楼层

我的输入必须把In:这个字符串弄个进去。
例如:
输入: in:abcd   我用代码scanf("in:%s", str1); str1就是abcd。  用到了scanf的输入非空白符

语法上是没错的,可是编译器运行不行。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-7 14:39:55 | 显示全部楼层
本帖最后由 雪山的肥猫 于 2013-12-7 14:42 编辑
musilintan 发表于 2013-12-6 14:26
scanf("in:%s", str1);这个是用来规定输入时必须首先输入"in:",输入in:abcd,最后str1只会接收abcd。你是 ...

恩,这才是点子上。连续输入没有问题吧!
我一开始就是问的连续那块。或许我表达问题,麻烦了。我就是连续那,编译没问题运行就出错了

while ((scanf("in:%spre:%s", in, pre)) != EOF)这不应该出错!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-8 10:54:17 | 显示全部楼层
  1. #include <stdio.h>  
  2. #include <malloc.h>  
  3. #include <string.h>  

  4. typedef struct node  
  5. {  
  6.       char ch;  
  7.       struct node *left, *right;  
  8. }node;               

  9. node * creat(char *pre,char *in,int len);
  10. {
  11.       int k;  
  12.       if(len<=0)
  13.         return NULL;  
  14.       node *head=(node*)malloc(sizeof(node));  
  15.       head->ch=*pre;  
  16.       char *p;  
  17.       for(p=in;p!=NULL;p++)
  18.       {
  19.             if(*p == *pre)
  20.             break;
  21.       }                 
  22.       k=p-in;  
  23.       head->left=creat(pre+1,in,k);
  24.       head->right=creat(pre+k+1,p+1,len-k-1);  
  25.       return head;  
  26. }

  27. void print(node *head);  
  28. {
  29.         if(head==NULL) return ;  
  30.   print(head->left);  
  31.   print(head->right);  
  32.   printf("%c",head->ch);
  33. }

  34. int main()  
  35. {  
  36.   int len;
  37.   int i;
  38.   char pre[30],in[30];
  39.   node *head;
  40.   head=(node*)malloc(sizeof(node));
  41.   while ((scanf("in:%spre:%s", in, pre) != EOF)
  42.   {
  43.       len=strlen(pre);  
  44.       head=creat(pre,in,len);
  45.       printf("post:");
  46.       print(head);  
  47.   }   
  48.   return 0;  
  49. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-8 10:55:02 | 显示全部楼层
musilintan 发表于 2013-12-7 20:48
你要不把代码贴出来,整体改吧。。。这样没上没下的。。。找不着方向。。。。

麻烦了,看下吧! 主要就是while输入哪里,你看下!谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-23 07:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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