#include<stdio.h>
#include<stdlib.h>
void skaitymas()
{
FILE *fp = fopen("3.txt","r");
int c,a;
while((c=getc(fp))!=EOF)
{
if(c != ' ')
{
a = a + c;
printf("%c ",a);
if(c == '\n')
printf("\n");
}
}
}
int main()
{
skaitymas();
printf("\n");
system("pause");
}
zodis antis plastake zvirblis aksesuaras
kompiuteris pelyte kate afganistanas lietuva
所以我试图从文件中读取单词并将其打印出来,但它会打印符号而不是字符。我想printf("%c",a)
是一个问题,我该如何解决?
答案 0 :(得分:1)
运行它,现在正在工作:
#include <stdio.h>
void skaitymas()
{
FILE *fp = fopen("3.txt","r");
char c,a='\0';
while((c=getc(fp))!=EOF)
{
if(c != ' ')
{
//a = a + c;
printf("%c ",c);
if(c == '\n')
printf("\n");
}
}
}
int main()
{
skaitymas();
printf("\n");
system("pause");
}
答案 1 :(得分:0)
什么是
a = a + c;
这将打印第一个字符正确,但然后在'z'(122)的值中添加'o'(111)的值,并且它继续执行相同的操作,这可能会溢出正常的char限制,因此它会打印符号。
编辑:由于你甚至没有初始化变量'a',它可能包含垃圾值,所以它甚至不会打印第一个字符正确。
答案 2 :(得分:0)
a = a + c
是实际的总和a
和c
值,因此它代表整数值。
要连接两个字符,请使用sprintf()
。
要么,
将char附加到字符串缓冲区:
char buf[BUF_SIZE]; // string buffer
[snip]
buf++ = a; // append a char to string buffer and increment buf pointer by 1byte.
答案 3 :(得分:0)
为什么不使用
char a,c; // characters
而不是
int a,c; // integers
我不明白为什么你用而不是打印c
printf("%c",c);
此外,你循环:
a = a + c;
所以它添加了ascii值并且不连接(在一些循环之后你会很快读取垃圾) (如果你想要连接a和c不能是int或chars,或者它们可以但连接将很困难,你将不得不使用更多变量)