
C语言 修改程序 把手动输入改成读取.txt文件输入
为了方便,我只贴出程序的主程序,只要把开头的手动输入的变成读取.txt输入的就行intmain(){intnum,i,n,maxbit;NODE*p;printf("请输...
为了方便,我只贴出程序的主程序,只要把开头的手动输入的变成读取.txt输入的就行
int main()
{
intnum,i,n,maxbit;
NODE* p;
printf("请输入数的个数:(不等于0,至少输入2个)\n");
scanf("%d",&num);
LISTNODE *listnodep=malloc(sizeof(LISTNODE));
add_listnode(listnodep);
listnodep->listhead=NULL;
for(i=0;i<num;i++){
printf("第%d个数:",i+1);
scanf("%d",&n);
p=malloc(sizeof(NODE));
p->num=n;
add_node(&listnodep->listhead,p);
}
程序的输入部分就在这句话上面,过程是先输入个数,再一个一个输入数字。
chnum=0;
for(p=listnodep->listhead,n=-1;p;p=p->next){
n=n&p->num;
}
if(n==0){
if(condition_check(listnodep->listhead)){
chnum+=num;
}else{
loop();
}
}else{
chnum+=count1(n);
maxbit=count_maxbit(listnodep->listhead);
n=~(unsigned int)n%(1<<maxbit);
for(p=listnodep->listhead;p;p=p->next){
p->num&=n;
}
if(check_all0(listnodep->listhead)){
}else{
delete_all0(&(listnodep->listhead));
if(listnodep->listhead->next==NULL){
chnum+=count1(listnodep->listhead->num);
}else{
if(condition_check(listnodep->listhead)){
chnum+=countnum(listnodep->listhead);
}else{
loop();
}
}
}
}
printf("字母数=%d\n",chnum);
system("pause");
return 0;
}
求大神把开头的手动输入的改成读取下图显示的.txt输入,M就是程序中的num表示个数,第三行就是输入的数字。 展开
int main()
{
intnum,i,n,maxbit;
NODE* p;
printf("请输入数的个数:(不等于0,至少输入2个)\n");
scanf("%d",&num);
LISTNODE *listnodep=malloc(sizeof(LISTNODE));
add_listnode(listnodep);
listnodep->listhead=NULL;
for(i=0;i<num;i++){
printf("第%d个数:",i+1);
scanf("%d",&n);
p=malloc(sizeof(NODE));
p->num=n;
add_node(&listnodep->listhead,p);
}
程序的输入部分就在这句话上面,过程是先输入个数,再一个一个输入数字。
chnum=0;
for(p=listnodep->listhead,n=-1;p;p=p->next){
n=n&p->num;
}
if(n==0){
if(condition_check(listnodep->listhead)){
chnum+=num;
}else{
loop();
}
}else{
chnum+=count1(n);
maxbit=count_maxbit(listnodep->listhead);
n=~(unsigned int)n%(1<<maxbit);
for(p=listnodep->listhead;p;p=p->next){
p->num&=n;
}
if(check_all0(listnodep->listhead)){
}else{
delete_all0(&(listnodep->listhead));
if(listnodep->listhead->next==NULL){
chnum+=count1(listnodep->listhead->num);
}else{
if(condition_check(listnodep->listhead)){
chnum+=countnum(listnodep->listhead);
}else{
loop();
}
}
}
}
printf("字母数=%d\n",chnum);
system("pause");
return 0;
}
求大神把开头的手动输入的改成读取下图显示的.txt输入,M就是程序中的num表示个数,第三行就是输入的数字。 展开
4个回答
展开全部
一般来说,从文件中读取数据,需要使用fopen打开文件,然后用fscanf、fread等函数从文件中读取数据。如果想对程序作出最小的改动的话,可以使用freopen函数。
freopen用于重定向输入输出流。该函数可以在不改变代码原貌的情况下改变输入输出环境,但使用时应当保证流是可靠的。
函数原型:
FILE *freopen( const char *filename, const char *mode, FILE *stream );
参数:
filename指定文件名,mode指定打开方式,stream指定需要重定向的流。
在这里,只要把标准输入流stdin重定向就可以,所以需要这样写:
freopen("file address", "r", stdin);
后面的代码不需做改动即可。
展开全部
int main() {
intnum,i,n,num,maxbit;
NODE *p;
char tmp[10];
FILE *fp = fopen("indata.txt","rt"); // 假定indata.txt是数据文件名
if(fp == NULL) {
printf("打开数据文件失败。\n");
return 1; // 1表明没有找到数据文件
}
fscanf(fp,"%s%d",tmp,&n);
fscanf(fp,"%s%d",tmp,&m);
LISTNODE *listnodep = (LISTNODE *)malloc(sizeof(LISTNODE));
add_listnode(listnodep);
listnodep->listhead = NULL;
for(i = 0; i < m && !feof(fp);i++) {
fscanf(fp,"%d",&num);
p = (LISTNODE *)malloc(sizeof(NODE));
p->num = num;
add_node(&listnodep->listhead,p);
}
fclose(fp);
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
FILE *fp=fopen("**.txt","r");
char str[12];
int n,i;
for(i=0;i<num;i++)
{
fscanf(fp,"%s ",str); //fscanf遇换行或空格都会停止
sscanf(str,"%d",&n); //然后转换成整形
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
FILE *file = fopen ( "test_15_623" );
然后,把你程序中的所有scanf ( ... )
换成 fscanf ( file , ... );
然后,把你程序中的所有scanf ( ... )
换成 fscanf ( file , ... );
追问
这样有指向性么?这个fscanf ( file , ... );自动按我的要求输入数据么?M后面的数据给num,第三行开始的数据自动读入?这么智能?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询