gpt4 book ai didi

c char 指针赋值

转载 作者:行者123 更新时间:2023-11-30 18:32:07 24 4
gpt4 key购买 nike

我在为 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*charp需要是 char*因为fgets()返回那个。我的问题是我是否可以转换 char*char []不知何故,或者是否有办法为 char* 赋值?

最佳答案

您的代码可以完美运行。从一个基本案例开始,给定一个输入文件,例如:

abcd

程序将 1 个换行符(“d”后的“enter”键)输出到控制台:

abcd
Abcd

这正是您编码的方式。它不会将 Abcd 写回文件,因为您打开文件只是为了读取,而不是写入。希望这不是你想要的。

注意:如果您的文件中没有换行符,或者从头开始已经超过 200 个字符,您可能会看到缓冲区溢出,这可能会导致它看起来不起作用。再次强调,从我展示的一个非常基本的文件开始,并确保您的代码完全您在此处发布的内容。

<小时/>

> I know, that the linep[i]='A'; does not work,

  • 不正确,您可以使用指向数组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;
}

关于c char 指针赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16651230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com