我正在完成一项学校任务,我需要一些帮助。
我的问题是,如何将从文件读入的字符组合成单个字符串的内存。这是我到目前为止所做的。
我的代码:
#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;
}
我不确定此代码是否完全正确。它打印出文件中的项目并在它们之间放置一个空格。并且有一个数组用于字符串。
答案 0 :(得分:4)
我也不希望得到答案
精细。
char
数组(mystring
)来保存您的字符串ch
存储到数组0
存储为最后一个元素)。注意事项:
realloc
并随时增加存储空间。最好留待以后printf(dynamicstr)
通常不安全。如果它包含"%d"
怎么办?最好printf("%s", dynamicstr)
。答案 1 :(得分:0)
你可以了解memcpy和malloc。他们是你的朋友。
- 詹森
答案 2 :(得分:0)
你需要阅读教科书中适用的部分来解释C中的“字符串”。如果没有你的理解,几乎没有办法回答你的问题,而不是简单地为你做。
C“字符串”是包含char
s并且NULL
终止的连续内存块。您需要分配它,然后在从文件中读取字符时将字符放入其中。请注意,您必须确保在执行此操作时不要超出已分配的内存,这称为“缓冲区溢出”。
答案 3 :(得分: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;
}