【问题标题】:Clarification on reading and writing files in CC语言读写文件的说明
【发布时间】:2013-10-29 17:44:47
【问题描述】:

我花了好几个小时试图弄清楚如何从输入文件中读取字符串、处理它并在 3 个不同的输出文件中写入元音、辅音和数字。这是我达到的代码:

void discriminator(input, output1, output2, output3) {

    if (string[i] == 'a' || string[i] == 'e' || string[i] == 'i' || string[i] == 'o' || string[i] == 'u' || ) {
        fputs(string[i], output1);
        i = i + sizeof(string[i]);
    }
    else if (int string[i]) {
        fputs(string[i], output2);
        i = i + sizeof(string[i]);
    }
    else {
        fputs(string[i], output3);
        i = i + sizeof(string[i]);
    }
}

int main() {

    FILE *inFile = fopen("input.txt","r");
    FILE *outVocali = fopen("outputVocali.txt", "w");
    FILE *outNumeri = fopen("outputNumeri.txt", "w");
    FILE *outConsonanti = fopen("outputConsonanti.txt", "w");

    char *string;
    char *fgets(string, EOF, inFile);
    int i = 0;

    while(fgets(string, EOF, inFile)) {
                discriminator(inFile, outVocali, outNumeri, outConsonanti);
    }

    fclose(inFile);
    fclose(outVocali);
    fclose(outNumeri);
    fclose(outConsonanti);

    return 0;
}

这是编译器写的:

esercizio.c:6:9:错误:使用未声明的标识符“字符串” if (string[i] == 'a' || string[i] == 'e' || string[i] == 'i' || stri... ^

esercizio.c:6:16:错误:使用未声明的标识符“i” if (string[i] == 'a' || string[i] == 'e' || string[i] == 'i' || stri... ^

esercizio.c:6:29:错误:使用未声明的标识符“字符串” if (string[i] == 'a' || string[i] == 'e' || string[i] == 'i' || stri... ^

esercizio.c:6:36:错误:使用未声明的标识符“i” if (string[i] == 'a' || string[i] == 'e' || string[i] == 'i' || stri... ^

esercizio.c:6:49:错误:使用未声明的标识符“字符串” if (string[i] == 'a' || string[i] == 'e' || string[i] == 'i' || stri... ^

esercizio.c:6:56:错误:使用未声明的标识符“i” if (string[i] == 'a' || string[i] == 'e' || string[i] == 'i' || stri... ^

esercizio.c:6:69:错误:使用未声明的标识符“字符串” ...== 'a' ||字符串[i] == 'e' ||字符串[i] == 'i' ||字符串[i] == 'o' ||英石... ^

esercizio.c:6:76:错误:使用未声明的标识符“i” ...'一个' ||字符串[i] == 'e' ||字符串[i] == 'i' ||字符串[i] == 'o' ||串... ^

esercizio.c:6:89:错误:使用未声明的标识符“字符串” ...== 'e' ||字符串[i] == 'i' ||字符串[i] == 'o' ||字符串[i] == '你' || ) { ^

esercizio.c:6:96:错误:使用未声明的标识符“i” ...'e' ||字符串[i] == 'i' ||字符串[i] == 'o' ||字符串[i] == '你' || ) { ^

esercizio.c:6:109:错误:预期表达式 ...'e' ||字符串[i] == 'i' ||字符串[i] == 'o' ||字符串[i] == '你' || ) { ^

esercizio.c:7:15:错误:使用未声明的标识符“字符串” fputs(字符串 [i],输出 1); ^

esercizio.c:7:22:错误:使用未声明的标识符“i” fputs(字符串 [i],输出 1); ^

esercizio.c:8:9:错误:使用未声明的标识符“i” i = i + sizeof(string[i]); ^

esercizio.c:8:13:错误:使用未声明的标识符“i” i = i + sizeof(string[i]); ^

esercizio.c:8:24:错误:使用未声明的标识符“字符串” i = i + sizeof(string[i]); ^

esercizio.c:8:31:错误:使用未声明的标识符“i” i = i + sizeof(string[i]); ^

esercizio.c:10:14:错误:预期表达式 否则 if (int string[i]) { ^

esercizio.c:11:15:错误:使用未声明的标识符“字符串” fputs(字符串 [i],输出 2); ^

致命错误:发出的错误太多,现在停止 [-ferror-limit=] 生成了 20 个错误。

有人指点一下吗?

【问题讨论】:

  • 您的具体问题是什么?
  • 当我编译代码时,会跳出关于变量的错误。我不知道我是否犯了错误,首先是关于指针,因为在 main 中调用过程“鉴别器”,编译器告诉我 string 和 i 不是声明变量
  • @RiccardoTosti 请阅读任何简单的 C 教程,然后您可以解决这些错误中的最大部分

标签: c input output


【解决方案1】:

这是你的整个程序吗? #include 行是什么?我看到的一个问题是char *string 没有分配内存。另外,下一行

while(fgets(stringa, EOF, inFile)) { 

引用不存在的变量 stringa。

【讨论】:

  • #include #include
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-13
  • 2013-10-29
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
相关资源
最近更新 更多