1

我正在做一个学校作业,我需要一点帮助。

我的问题是,如何将从文件中读取的字符组合到单个内存字符串中。这是我到目前为止所拥有的。

我的代码:

#include <stdio.h>
#include <stdlib.h>
char myString;

int main(int argc, char *argv[]){
    FILE* fin;
    char ch;

    fin=fopen(argv[1],"r");
    while((ch=fgetc(fin))!=EOF){
            printf("%c\n", ch);
    }
    fclose(fin);
    return 0;
}

我的老师说主要的最后一部分是:

   putchar(‘\n’);    
   printf( myString );
   return 0;
}

但我不确定如何将它放在我的代码中。提前谢谢你,如果你能帮我解决这个问题,我也不希望得到答案,那将再次感谢你。

更新代码:

#include <stdio.h>
#include <stdlib.h>


int main(int argc, char *argv[]){
    FILE* fin;
    int i;
    char myString[3];

    fin=fopen(argv[1],"r");
    while(fgets(myString,sizeof(myString), fin)){

            putchar('\n');
            printf("%c\n", myString[i]);
    }
    fclose(fin);
    return 0;
}

我不确定这段代码是否完全正确。它打印出文件中的项目并在它们之间放置一个空格。并且有一个用于字符串的数组。

4

4 回答 4

4

我也不希望得到答案

美好的。

  • 定义一个足够大的char数组 ( ) 以容纳您的字符串mystring
  • 定义一个计数器来跟踪数组中的位置
  • 在每一步存储ch到数组中
  • 请记住以 0 结尾(存储0为最后一个元素)。

注意事项:

  • realloc如果您的程序要读取任意长的输入,您将需要随时了解并增加存储空间。最好留到以后
  • 这样做通常是不安全的printf(dynamicstr)。如果它包含一个"%d"? 最好是printf("%s", dynamicstr)
于 2011-11-25T19:56:55.120 回答
0

您将了解 memcpy 和 malloc。他们是你的朋友。

——杰森

于 2011-11-25T19:58:10.113 回答
0

您需要阅读教科书的适用部分,该部分解释了 C 中的“字符串”是什么。如果您不理解这一点,几乎没有办法回答您的问题,而无需简单地为您做这件事。

AC“字符串”是包含chars 的连续内存块,并被NULL终止。您需要分配它,然后在从文件中读取字符时将它们放入其中。请注意,您必须确保这样做时不会超出分配的内存,这称为“缓冲区溢出”。

于 2011-11-25T20:02:39.683 回答
0
#include <stdio.h>
#include <stdlib.h>

char* myString;
int main(int argc, char *argv[]){
    FILE* fin;
    fpos_t fsize = 0;
    char ch;
    char *pch;

    fin=fopen(argv[1],"r");
    fseek(fin,0,SEEK_END);
    fgetpos(fin, &fsize);
    rewind(fin);
    pch = myString = (char*)malloc((fsize+1)*sizeof(char));
    while((ch=fgetc(fin))!=EOF){
            *pch++ = (char)ch;
    }
    *pch = '\0';
    fclose(fin);
    printf("%s", myString);//printf(myString);// need escape %
    free(myString);
    return 0;
}
于 2011-11-26T04:53:08.307 回答