为什么我的代码在vc6上执行不了 在linux上却能执行
代码如下
在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