我对 C 很陌生,我仍在学习基础知识。我正在创建一个读取文本文件并单独分解单词的应用程序。我的意图是计算每个单词出现的次数。
无论如何,下面代码中的最后一个 do-while 循环执行得很好,然后崩溃了。此循环将内存地址打印到该字(指针),然后打印该字。它可以很好地完成此操作,然后在最后一次迭代中崩溃。我的意图是将这个内存地址推送到一个单链表中,尽管它一旦停止崩溃。
另外,只是简单地提一下下面的数组大小;我还想出如何设置保存单词字符数组等所需的正确大小,因为您必须在填充数组之前定义大小,而我不知道该怎么做。因此,我将它们设置为 1024。
#include<stdio.h>
#include<string.h>
int main (int argc, char **argv) {
FILE * pFile;
int c;
int n = 0;
char *wp;
char wordArray[1024];
char delims[] = " "; // delims spaces in the word array.
char *result = NULL;
result = strtok(wordArray, delims);
char holder[1024];
pFile=fopen (argv[1],"r");
if (pFile == NULL) perror ("Error opening file");
else {
do {
c = fgetc (pFile);
wordArray[n] = c;
n++;
} while (c != EOF);
n = 0;
fclose (pFile);
do {
result = strtok(NULL, delims);
holder[n] = *result; // holder stores the value of 'result', which should be a word.
wp = &holder[n]; // wp points to the address of 'holder' which holds the 'result'.
n++;
printf("Pointer value = %d\n", wp); // Prints the address of holder.
printf("Result is \"%s\"\n", result); // Prints the 'result' which is a word from the array.
//sl_push_front(&wp); // Push address onto stack.
} while (result != NULL);
}
return 0;
}
请忽略糟糕的程序结构,正如我所提到的,我是新手!
谢谢