2015-10-15 79 views
0

大家好我在打印包含 - >“需要帮助”的.txt文件的前两个字母/字符时出现问题。我想打印前两个字母 - >“ne”。我试着用CH [],但我不能确定,所以我改回了其运作部分:打印文件的第一个字母C

int main() { 

    char ch, file_name[2]; 
    int i; 

    FILE *fp; 

    printf("Enter the name of file you wish to see\n"); 
    gets(file_name); 

    fp = fopen(file_name,"r"); 

    if(fp == NULL) 
    { 
     printf("Error while opening the file.\n"); 
     exit(1); 
    } 

    printf("The contents of %s file are :\n", file_name); 


    while((ch = fgetc(fp)) != EOF) 
     printf("%c",ch); 

    fclose(fp); 

    return 0; 
} 
+4

看看while循环。只有2个字符后,你将如何退出?数它们然后'打破;'。 – vsoftco

+0

还有很多其他的东西......我的意思是,如果你的'file_name'多于一个字符...... –

+1

不相关,但是'char ch,file_name [2];'这真的是你想要的吗? – John3136

回答

-1

这就是我想出了这么远。它会打印前两个字符,但会在下面的正方形内打印问号。 下面是代码:

int main() { 

char ch[2], file_name[100]; 
int i; 

FILE *fp; 

printf("Enter the name of file you wish to see\n"); 
gets(file_name); 

fp = fopen(file_name,"r"); 

if(fp == NULL) 
{ 
    printf("Error while opening the file.\n"); 
    exit(1); 
} 

printf("The contents of %s file are :\n", file_name); 

fscanf(fp, "%2s", ch); 
printf("%s\n", ch); 




while((ch[i] = fgetc(fp)) != EOF){ 
    printf("%c",ch); 
} 
fclose(fp); 

return 0; 
} 
+1

'char ch [2] ... fscanf(fp,”%2s“,ch);'不起作用。 1)没有地方为字符串空字符。 2)'%2s'''不会读空格,还是很好的尝试 – chux

0
int main() { 
char ch[2]; 
FILE *fp; 
fp = fopen("file.txt","r");  
fread(ch,2,1,fp); 
printf("(%c%c) (%2.2s)",ch[0], ch[1],ch); 
} 

标准输出: (NE)(NE)

+0

你不需要在%2.2s的字符串末尾有空值(如果给出了精度,则不需要空字节:man 3 printf) 。 –

0

我不知道为什么你只需要两个首字母,但在这里是如何做到这一点。

char file_name[256]; 
gets(file_name); 

int lenght = 0; 
strlen(file_name) > 2 ? lenght = 2: lenght = strlen(file_name); 

for(int i = 0; i < lenght; i++) 
    printf("%c", file_name[i]); 

但我可以给你C(字符数组)的字符串的建议是尝试总是创建一个你需要的更大的数组。它不会花费太多的内存,并且拥有足够的内存总是更安全。当你调用printf()这样的标准函数时,他们会检查空终止字符,这将定义你的字符串的大小。

相关问题