我试图实现的代码是一种读取 .txt 文件并将字符串转换为节点的方法。本质上,当我阅读 .txt 文件时,我首先检查非字母(该词不能以数字开头,该词也不能在该词的任何索引中具有非字母数字)。一旦找到第一个字母,程序就会退出循环并进入另一个循环,直到它看到一个空格。当我成功地造一个词(当找到一个空格时,一个词“结束”),我将这个词输入到一个链表中。
当我运行它时,我得到一个总线错误:10。我认为这是由于 word[b] 数组,但是当我 malloc 它时,我仍然得到同样的错误。
先感谢您!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define TRUE 1
#define FALSE 0
struct Node{
char value[100];
int numOccur;
int numVariance;
struct Node *next;
};
void testprint(struct Node * head){
int data;
data = head->value;
strcpy(data,head->value);
while(head != NULL){
printf("%s\n", data);
head = head->next;
}
}
int main()
{
struct Node *curr;
struct Node *n;
struct Node *head =0;
struct Node *tail =0;
struct Node *next;
char word[100];
int a;
int x;
FILE *file1;
file1 = fopen("test1.txt", "r"); //opens text file
if(file1 == NULL){
fprintf(stderr,"Error: Could not open file"); //if file1 has error, returns error message
exit(1);
}
a = fgetc(file1);
int b = 0;
while(a != EOF){
while(!isalpha(a)){
a = fgetc(file1);
continue;
}
n = (struct Node *) malloc( sizeof( struct Node));
while(isalnum(a)){
while( a != ' ' && a != EOF){
word[b] = a;
a = fgetc(file1);
b++;
}
word[b] = '\0';
}
n->next = 0;
if(head == 0){
head = n;
tail = n;
}
else{
tail->next = n;
tail = n;
}
}
testprint(head);
fclose(file1);
}