[英]c char pointer assignment
我在给char指针赋值时遇到问题。
#include<stdio.h>
int main(int argc, char* argv[]){
char line[200], *p, q;
int i=0;
FILE* f=fopen(argv[1], "r");
for( ; ;){
p=fgets(line, 200, f);
if (p==NULL) break;
printf("%s", p);
i=0;
while(p[i]!='\n'){
if (p[i]=='a') p[i]='A';
i++;
}
printf("%s", p);
}
}
我知道,那条线
p[i]='A';
不工作,但是这就是我基本上需要做的,替换char*
用char
。 p
必须为char*
因为fgets()
返回该值。 我的问题是,是否可以将char*
转换为char
[]
,或者是否可以将值分配给char*
?
您的代码按原样完美运行。 从一个基本案例开始,给出一个输入文件,例如:
A B C D
并将程序输出到控制台的1个换行符(“ d”之后的“ enter”键):
A B C D
A B C D
正是您编码的方式。 它不会将Abcd
写回文件,因为您仅打开文件进行读取,而不是写入。 希望那不是您想要的。
注意:如果您的文件中没有换行符,或者从一开始就超过了200个字符,则可能会看到缓冲区溢出,这可能会导致它看起来无法正常工作。 同样,从我展示的一个非常基本的文件开始,并确保您的代码与您在此处发布的内容完全相同 。
> I know, that the line
p [i] ='A'; 不起作用,
p
的指针或数组本身的line
来访问和更改元素。 fgets()
将前200个字符(或直到第一个换行符)存储到line
并返回您分配给p
的指针,该指针将可以访问或更改数组中的字符。
> I ... need to ..., replace a char* with a char
char *p
访问数组并将char
'a'
更改为'A'
> p needs to be a char* because fgets() returns that.
fgets()
给您两件事,它填充并“返回”您的数组( line
),并且还向填充的数组返回一个char *
。 因此,不,您根本不需要使用p
,下面的代码完全不需要指针即可工作: int main(int argc, char* argv[]){
char line[200];
int i=0;
FILE* f=fopen("test.txt", "r");
for( ; ;){
if (fgets(line, 200, f)==NULL) break;
printf("%s", line);
i=0;
while(line[i]!='\n'){
if (line[i]=='a') line[i]='A';
i++;
}
printf("%s", line);
}
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.