为什么我的代码在vc6上执行不了 在linux上却能执行

chenlei1700 2009-11-10 01:58:28
代码如下
在vc6下一到主函数的文件读取那里就出错 代码中用红色写的部分
谢谢

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


struct data_node
{
char *name;
int value0, value1;
struct data_node *next;
} * head;

struct data_node * new_node ( void )
{
struct data_node *p;
p = ( struct data_node * ) malloc ( sizeof ( struct data_node ) );
p->name = ( char * ) malloc ( 100 );
return p;
}

void add_node ( struct data_node *head,char * target, struct data_node *
tmp_node )
{
struct data_node *crnt,*node;
crnt=head;
while(crnt!=NULL){
if(strcmp(crnt->name,target)==0){
node=crnt->next;
crnt->next=tmp_node;
tmp_node->next=node;
printf("addnode success\n");
return;
}
crnt=crnt->next;
}
printf("add_node fail\n");

}

void delete_node ( struct data_node *head,char *target )
{

struct data_node *crnt,*priv;
crnt=head;
while(crnt!=NULL){

if(strcmp(crnt->name,target)==0){
priv->next=crnt->next;
free(crnt);
/*printf("addnode success");
return;*/
printf("delete_node success\n");
return;
}
priv=crnt;
crnt=crnt->next;

}
printf("delete_node fail\n");
}



void disp_list ( struct data_node *p )
{
while ( p->next != NULL ) {
printf ( "%10s:%3d:%3d\n", p->name, p->value0, p->value1 );
p = p->next;
}
}

int main ( int argc, char ** argv ) {
FILE *f;
struct data_node * tmp_node, * crnt_node;
char data_str[100];

head = new_node ( );
strcpy ( head->name, "HEAD" );
crnt_node = head;

if ( ( f = fopen ( "/home/adam/Desktop/1.txt", "r" ) ) != NULL ) {
while ( fgets ( data_str, sizeof ( data_str ), f ) != NULL ) {
sscanf ( data_str, "%s%d%d", crnt_node->name, &crnt_node->value0,
&crnt_node->value1 );
crnt_node->next = new_node ( );
crnt_node = crnt_node->next;
}
crnt_node->next = NULL;
fclose ( f );
} else exit ( -1 )
;



delete_node ( head,"Oita" );

tmp_node = new_node ( );
strcpy ( tmp_node->name, "Oita2" );
tmp_node->value0 = 0;
tmp_node->value1 = 10;
add_node ( head,"Saga", tmp_node );




disp_list ( head );

exit ( 0 );
}
————————————————————————————
1.txt的内容如下

Niigata 10938 2419889 Niigata
Toyama 2801 1109205 Toyama
Ishikawa 4185 1171791 Ishikawa
Fukui 4188 818975
Yamanashi 4201 881071
Nagano 12598 2189094
Gifu 10209 2104361
Shizuoka 7328 3793153
Aichi 5115 7296527v
Mie 5761 1867696
Shiga 3855 1387110
Kyoto 4613 2644075
Osaka 1893 8822241
Hyogo 8388 5592939
Nara 3691 1416323
Wakayama 4725 1028424
Tottori 3507 603987
Shimane 6707 736882
Okayama 7008 1954344
Hiroshima 8475 2875488
Yamaguchi 6110 1483531
Tokushima 4144 804849
Kagawa 1861 1009328
Ehime 5676 1459988
Kochi 7104 789688
Fukuoka 4836 5055777
Saga 2439 862547 Saga
Oita2 0 10
Nagasaki 4091 1466512
Kumamoto 6907 1835909
Oita 5803 1206174 Oita
Miyazaki 6684 1148414
Kagoshima 9132 1742965
Okinawa 2267 1368137
...全文
76 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenlei1700 2009-11-10
  • 打赏
  • 举报
回复
谢谢大家 忘打了 1个 \
chenlei1700 2009-11-10
  • 打赏
  • 举报
回复
忘说了路径对了也出不来结果 为什么呢
oxgen350 2009-11-10
  • 打赏
  • 举报
回复
路径问题
bomeng_21it 2009-11-10
  • 打赏
  • 举报
回复
f = fopen ( "/home/adam/Desktop/1.txt", "r" )
bomeng_21it 2009-11-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 do_fork 的回复:]
windows下有/home吗?
[/Quote]
说的好
亦枫Leonlew 2009-11-10
  • 打赏
  • 举报
回复
路径名格式不对,windows下路径是\,linux下是/
笨笨熊_穆 2009-11-10
  • 打赏
  • 举报
回复
/home/adam/Desktop/1.txt
这个路径是linux下的路径。在windows下,除非你自己建立这个路径,才能访问到你的文件,否则就当作访问不到文件来处理。也就是f= NULL .这样后面的操作都会出现错误。
jzd8000 2009-11-10
  • 打赏
  • 举报
回复
路径表达方式不同啊
rejoice914 2009-11-10
  • 打赏
  • 举报
回复
windows 下路径用\\
do_fork 2009-11-10
  • 打赏
  • 举报
回复
windows下有/home吗?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧