user-0 提问: 关于字符顺序串的创建和输出。。为什么输入和输出始终对不上啊？

回复:
user: user-1
content: 给点分吧，没法下载了！2分也好啊！

user: user-2
content: 在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。

user: user-0
content: 引用 10 楼 braveboyny 的回复:设置断点单步执行，或者在适当地方用printf查看程序运行情况，这一个程序员猿必会的，像这种小程序就该自己调试调试。 授人以鱼不如授人以渔。就是都是过了，也都没弄出来啊！所以才知道在哪里错了吗？

user: user-3
content: 设置断点单步执行，或者在适当地方用printf查看程序运行情况，这一个程序员猿必会的，像这种小程序就该自己调试调试。 授人以鱼不如授人以渔。

user: user-0
content: 引用 6 楼 u010915464 的回复:#include<stdio.h>  #include<malloc.h> #include<string.h>//头文件  #define MAXSIZE 30  typedef char elemtype;  typedef struct{      elemtype str[MAXSIZE];      int len;  }SeqString;  //初始化顺序字符串 SeqString *InitStr(SeqString *s){      s=(SeqString *)malloc(sizeof(SeqString)); 	 memset(s,0,sizeof(SeqString));//申请的内存空间里面不知道有什么东西，所以要把他清空      s->len=NULL;      return s;   }    本人调试运行通过，完全没问题了     那你能再帮我看看吗？     SeqString *CreateStr(SeqString *s){     char ch;     printf("输入要输入的字符串（按回车键结束）：");     while((ch=getchar())!='\n')     {         s->str[s->len]=ch;         s->len++;     }     s->str[s->len]='\0';    //最后一个赋值为'\0'表示结束。（这个很重要）     return s; }       int StrInsert(SeqString *s,int pos,int len){     int i,j=0;     SeqString *s2;     s2=InitStr(s2);     s2=CreateStr(s2);                        //为什么这个只能执行到 printf("输入要输入的字符串（按回车键结束）：");这里啊？     if(pos<1||pos>=s->len||len<0||len>s->len-pos+1)     {         printf("位置或者长度错误！\n");         return 0;     }     for(i=s->len;i<pos;i--)     {         s->str[i+len]=s->str[i];     }     for(i=pos-1;i<pos+len;i++)     {         s->str[i]=s2->str[j];         j++;     }     s->len=s->len+len;     s->str[s->len]='\0';     printf("插入子串后的字符串为");     printf("%s\n",s->str);     return 1; }

user: user-0
content: 引用 4 楼 ilikehigame 的回复:#include<stdio.h> #include<malloc.h> #define MAXSIZE 30 typedef char elemtype; typedef struct { 	elemtype str[MAXSIZE]; 	int len; }SeqString; //初始化顺序字符串 SeqString *InitStr(SeqString *s){ 	s=(SeqString *)malloc(sizeof(SeqString)); 	memset(s->str,0,sizeof(s->str)); 	s->len=NULL; 	return s; } //判断是否建立成功 int Judge(SeqString *s){ 	if(s->len==NULL) 	{ 		printf("顺序字符串建立成功.\n"); 		return 1; 	} 	else 		return 0; } //输入字符串 SeqString *CreateStr(SeqString *s){  //这个函数哪里错了，或者其他哪里错输出结果一直和输入不一样啊 	char ch; 	printf("输入要输入的字符串（按回车键结束）："); 	while((ch=getchar())!='\n') 	{ 		s->str[s->len]=ch; 		s->len++; 	} 	return s; }  int Printf(SeqString *s) { 	printf("%s",s->str); 	return 0; } int main() { 	SeqString *s = NULL;	 	s=InitStr(s); 	Judge(s); 	s=CreateStr(s); 	Printf(s); 	system("pause"); 	return 0; } 改一下 vs2010下结果正确memset(s->str,0,sizeof(s->str));是什么意思？麻烦解答下，谢谢

user: user-0
content: 引用 2 楼 u012061345 的回复:str末尾加个'\0'试试。正解，不过我发现了。谢谢！

user: user-4
content: #include<stdio.h>  #include<malloc.h> #include<string.h>//头文件  #define MAXSIZE 30  typedef char elemtype;  typedef struct{      elemtype str[MAXSIZE];      int len;  }SeqString;  //初始化顺序字符串 SeqString *InitStr(SeqString *s){      s=(SeqString *)malloc(sizeof(SeqString)); 	 memset(s,0,sizeof(SeqString));//申请的内存空间里面不知道有什么东西，所以要把他清空      s->len=NULL;      return s;   }    本人调试运行通过，完全没问题了

user: user-5
content: 简单的问题要写这么复杂吗

user: user-6
content: #include<stdio.h> #include<malloc.h> #define MAXSIZE 30 typedef char elemtype; typedef struct { 	elemtype str[MAXSIZE]; 	int len; }SeqString; //初始化顺序字符串 SeqString *InitStr(SeqString *s){ 	s=(SeqString *)malloc(sizeof(SeqString)); 	memset(s->str,0,sizeof(s->str)); 	s->len=NULL; 	return s; } //判断是否建立成功 int Judge(SeqString *s){ 	if(s->len==NULL) 	{ 		printf("顺序字符串建立成功.\n"); 		return 1; 	} 	else 		return 0; } //输入字符串 SeqString *CreateStr(SeqString *s){  //这个函数哪里错了，或者其他哪里错输出结果一直和输入不一样啊 	char ch; 	printf("输入要输入的字符串（按回车键结束）："); 	while((ch=getchar())!='\n') 	{ 		s->str[s->len]=ch; 		s->len++; 	} 	return s; }  int Printf(SeqString *s) { 	printf("%s",s->str); 	return 0; } int main() { 	SeqString *s = NULL;	 	s=InitStr(s); 	Judge(s); 	s=CreateStr(s); 	Printf(s); 	system("pause"); 	return 0; } 改一下 vs2010下结果正确

user: user-1
content: // ConsoleApplication3.cpp : 定义控制台应用程序的入口点。 //  #include "stdafx.h" #include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<string.h>  #define MAXSIZE 30  typedef char elemtype;  typedef struct{ 	elemtype str[MAXSIZE]; 	int len; }SeqString;  //初始化顺序字符串 SeqString *InitStr(SeqString *s){ 	s = (SeqString *)malloc(sizeof(SeqString));  	if (s != NULL) { 		memset(s, 0, sizeof(s)); 		s->len = 0; 	}  	return s; }  //判断是否建立成功 int Judge(SeqString *s){ 	if (s != NULL) 	{ 		printf("顺序字符串建立成功.\n"); 		return 1; 	} 	else 		return 0; }  //输入字符串 SeqString *CreateStr(SeqString *s){  //这个函数哪里错了，或者其他哪里错输出结果一直和输入不一样啊 	char ch; 	 	printf("输入要输入的字符串（按回车键结束）："); 	while ((ch = getchar()) != '\n') 	{ 		s->str[s->len] = ch; 		s->len++; 	}  	return s; }  int Printf(SeqString *s){ 	printf("%s\n", s->str); 	return 1; }  int main(){ 	SeqString *s = NULL; 	int pos, len;  	s = InitStr(s); 	 	if (!Judge(s)) { 		printf("initial failing!\n"); 		return -1; 	}  	s = CreateStr(s);  	Printf(s);  	return 0; }  /*malloc没有初始化，导致分配内存有脏数据*/

user: user-7
content: str末尾加个'\0'试试。

user: user-8
content: Too long to parse. 闪