我想逐个字符地读取文本文件,然后对字符和单词执行某些操作。这是我的实现:
char c;
char* word="";
fp = fopen("text.txt","rt");
do
{
c = (char)fgetc(fp);
if(c == ' ' || c == '\n' || c == '\0' || c == '\t')
{
//wordfunction(word)
word = ""; //Reset word
}
else
{
strcat(word, &c); //Keeps track of current word
}
//characterfunction(c);
}while(c != EOF);
fclose(fp);
但是,当我尝试运行此程序时,我的程序立即崩溃。将word设置为“”有问题吗?如果是这样,我该怎么办?
最佳答案
在你的word变量初始赋值中,你指向一个长度为0的静态字符串。当你尝试向其中写入数据时,你将覆盖其他内容,并且你的程序将停止运行。相反,您需要为您的文字保留空间。
你在哪里
char* word="";
使用代替
char word[100];
这将为您的单词创建 100 个字符的空间。
char c;
char word[100];
fp = fopen("text.txt","rt");
int index = 0;
do {
c = (char)fgetc(fp);
if(c == ' ' || c == '\n' || c == '\0' || c == '\t') {
//wordfunction(word)
word[0] = 0; //Reset word
index = 0;
} else {
word[index++] = c;
word[index] = 0;
//strcat(word, &c); //Keeps track of current word
}
//characterfunction(c);
} while(c != EOF);
fclose(fp);
关于c - 使用fgetc读取单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26477345/