gpt4 book ai didi

c - 如何循环遍历字符串中的每个字符?

转载 作者:行者123 更新时间:2023-11-30 18:39:37 25 4
gpt4 key购买 nike

我想要做的是将一个名称作为输出文件,然后将一个字符串从其中一次一个地打印到输出文件中。

#include <stdio.h>

int main(void){
char* outputName;
char* input;
printf("Type in the name of the output file: ");
scanf("%s",outputName);
FILE *outputFile = fopen(outputName , "w");
printf("type something: ");
scanf("%s", input);
int i;
for( i = 0; i < sizeof(input)/sizeof(input[0]) ; i++ ){
fprintf(outputFile,"%c" ,input[i]);
}
fclose(outputFile);
return 0;
}

当我运行时,它会询问输出文件名,然后崩溃。我究竟做错了什么?

顺便说一句,我对 C 完全陌生。任何帮助表示赞赏。

最佳答案

sizeof(input)/sizeof(input[0]) 在这里不起作用,因为 input 是一个指针,所以 sizeof(input) code> 只会给出指针的大小,而不是所指向的数组的大小。

使用strlen,计算空终止符之前的字符数:

for( i = 0; i < strlen(input) ; i++ ){
<小时/>

顺便说一句,您还忘记为 inputoutputName 分配内存。修复它:

char outputName[n];
char input[n];

其中 n 是一些魔数(Magic Number),表示可以在 C 字符串中存储的字符数,包括终止空字符。

请注意,这种方法(使用数组而不是指针)使 sizeof(input)/sizeof(input[0]) 按您的预期工作。

关于c - 如何循环遍历字符串中的每个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29055067/

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