您好,我遇到了一个程序的问题,该程序接收用户提供的文本字符串并做了 3 件事:
- 将所有元音字母转换为大写字母,打印新文本并打印转换后的元音字母数。
- 将新文本保存到文件中。
- 逐字符打印转换后的文本。
代码如下
#include <stdio.h>
void convert(char *ptrQuote[80], int nvocals);
void save(char *ptrQuote[80]);
void print(char *ptrQuote[80]);
int main(int argc, char** argv) {
char quote[80];
char *ptrQuote[80];
int nvocals= 0;
printf("Enter your quote :\n");
scanf("%s", "e);
for(int i= 0; i<80; i++)
{
ptrQuote[i]= "e[i];
}
convert(ptrQuote, nvocals);
save(ptrQuote);
print(ptrQuote);
return 0;
}
void convert(char *ptrQuote[80], int nvocals)
{
for(int i=0; i<80; i++)
{
if(*ptrQuote[i]=='a')
{
*ptrQuote[i]='A';
nvocals ++;
}
if(*ptrQuote[i]=='e')
{
*ptrQuote[i]='E';
nvocals ++;
}
if(*ptrQuote[i]=='i')
{
*ptrQuote[i]='I';
nvocals ++;
}
if(*ptrQuote[i]=='o')
{
*ptrQuote[i]='O';
nvocals ++;
}
if(*ptrQuote[i]=='u')
{
*ptrQuote[i]='U';
nvocals ++;
}
}
printf("%s\n", *ptrQuote);
printf("Number of vocals: %d\n", nvocals);
}
void save(char *ptrQuote[80])
{
FILE *quote;
quote= fopen("quote.txt", "w");
fwrite(&ptrQuote[80], sizeof(*ptrQuote), 1, quote);
fclose(quote);
}
void print(char *ptrQuote[80])
{
for(int i=0; i<sizeof(*ptrQuote); i++)
{
printf("%c", *ptrQuote[i]);
}
}
第一个功能正常工作,但是当涉及到保存和打印功能时,它会保存并打印不完整的报价。如您所见,我正在使用指针。我能做些什么?谢谢。
最佳答案
你很接近。不要为您的代码使用 80 个指针(可能是 一点点 过高),只需使用一个:
#include <stdio.h>
void convert(char ptrQuote[80], int nvocals);
void save(char ptrQuote[80]);
void print(char ptrQuote[80]);
int main(int argc, char **argv) {
char quote[80];
int nvocals = 0;
printf("Enter your quote :\n");
scanf("%s", "e);
convert(quote, nvocals);
save(quote);
print(quote);
return 0;
}
void convert(char ptrQuote[80], int nvocals)
{
for(int i=0; i<80; i++)
{
if(ptrQuote[i]=='a')
{
ptrQuote[i]='A';
nvocals ++;
}
if(ptrQuote[i]=='e')
{
ptrQuote[i]='E';
nvocals ++;
}
if(ptrQuote[i]=='i')
{
ptrQuote[i]='I';
nvocals ++;
}
if(ptrQuote[i]=='o')
{
ptrQuote[i]='O';
nvocals ++;
}
if(ptrQuote[i]=='u')
{
ptrQuote[i]='U';
nvocals ++;
}
}
printf("%s\n", ptrQuote);
printf("Number of vocals: %d\n", nvocals);
}
void save(char ptrQuote[80])
{
FILE *quote;
quote = fopen("quote.txt", "w");
fwrite(ptrQuote, sizeof(*ptrQuote), 1, quote);
fclose(quote);
}
void print(char ptrQuote[80])
{
/* no need for loop here anymore */
printf("%s\n", ptrQuote);
}
您还可以打印到文件(使用您的方法):
for (int i = 0; i < 80; ++i)
fputc(*ptrQuote[i], quote);
关于c++ - 使用 C++ 在文件上保存一个字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33001042/