| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1545 人关注过本帖
标题:一个小问题,怎么让这个程序不以读入换行符结束,而是以EOF结尾
只看楼主 加入收藏
吕宏
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2016-4-12
结帖率:86.67%
收藏
已结贴  问题点数:20 回复次数:3 
一个小问题,怎么让这个程序不以读入换行符结束,而是以EOF结尾
#include <stdio.h>
#include <stdlib.h>
typedef struct String String;
struct String
{
char ch;
String *next;
};
void SaveSring(String ** head);
void PrintString(String *head);
void SaveToArray(String *head);
int main(void)
{
String *head = NULL;
printf("Please input  a string\n");
SaveSring(&head);
PrintString(head);
SaveToArray(head);
return 0;
}
void SaveSring(String ** head)
{
String *current = NULL;
String *previous = NULL;
while(1)
{
current = (String*)malloc(sizeof(String));
if (*head == NULL)
{
 *head = current;
}
if (previous != NULL)
previous->next = current;
previous = current;
current->next = NULL;
scanf("%c", &current->ch);

 if (current->ch =='\n')
 
 {
current->ch = '\0';
current->next = NULL;
break;

}
}
}
void PrintString(String *head)
{
while (head != NULL)
{
printf("%c",head->ch);
head = head->next;
}
printf("\n");
printf("\n");
printf("\n");
}

void SaveToArray(String *head)
{
int cnt;
String *temp = head;
for(cnt = 1; temp->next != NULL;)
{
temp = temp->next;
cnt=cnt+1;
}
char string[100];
for (int i = 0;i<cnt;++i)
{
string[i] = head->ch;
head = head->next;
}
  puts(string);
  printf("\n");
}
怎么让这个程序不以读入换行符结束,而是以EOF结尾
搜索更多相关主题的帖子: previous current include return 换行符 
2016-06-07 09:54
吕宏
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2016-4-12
收藏
得分:0 
scanf("%c", &current->ch);

 if (current->ch =='\n')
 
 {
current->ch = '\0';
current->next = NULL;
break;

}
应该是这一段代码的问题
2016-06-07 09:54
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:10 
这程序是你写的话你就应该会改
EOF的值是-1,或者用标注库函数feof(stream)

另外一个问题就是,一个字节的char,居然每个都作为一个节点?
地址的大小可比这个char多几倍。
2016-06-08 18:14
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
收藏
得分:10 
看着楼主这段代码,我顿时头晕了。

普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2016-06-08 18:27
快速回复:一个小问题,怎么让这个程序不以读入换行符结束,而是以EOF结尾
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018552 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved