有人能帮我学C吗

有人能帮我学C吗,c,C,用C编写一个程序: 声明名为buffer的字符串变量,最大大小为80 从键盘向缓冲区输入字符串 通过将任何元音(大写或小写字母“a”、“e”、“i”、“o”或“u”)替换为加号(+)来修改缓冲区中包含的字符串 打印出修改后的字符串 打印被替换的元音的总数 我这样做: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char buffer[80]; c

用C编写一个程序: 声明名为buffer的字符串变量,最大大小为80 从键盘向缓冲区输入字符串 通过将任何元音(大写或小写字母“a”、“e”、“i”、“o”或“u”)替换为加号(+)来修改缓冲区中包含的字符串 打印出修改后的字符串 打印被替换的元音的总数

我这样做:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
    char buffer[80];
    char word[80];
    char word2[80];
    scanf("%s",word);
    strcpy(buffer, word);

   int i;
   int counter=0;
   for(i=0;i<80;i++)
   {
      word2[i]="";
   }

   for(i=0;i<strlen(buffer);i++)
   {
   if(buffer[i]=="a" || buffer[i]=="e" || buffer[i]=="i" || buffer[i]=="o" || buffer[i]=="u" || buffer[i]=="A" || buffer[i]=="E" || buffer[i]=="I" || buffer[i]=="O" || buffer[i]=="U")
  //   if(strcmp(buffer[i],"a")==0)
      {
          strcat(word2,"+");
          counter++;
      }else{
       strcat(word2,buffer[i]);
      }
   }

   printf("The modified string is %s",word2);
   printf("in total there was %d vowels.",counter);

   return 0;
}
#包括
#包括
#包括
int main(){
字符缓冲区[80];
字符字[80];
char-word2[80];
scanf(“%s”,单词);
strcpy(缓冲区、字);
int i;
int计数器=0;

对于(i=0;i您需要对字符使用单引号:

buffer[i]=='a'

“a”
表示指向字符串文本的指针,该字符串文本将存储在程序地址空间的某个段中。

您需要对字符使用单引号:

buffer[i]=='a'
“a”
表示指向字符串文本的指针,该字符串文本将存储在程序地址空间的某个段中。

试试这个

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char buffer[80];
    char word[80];
    char word2[80];
    scanf("%s",word);
    strcpy(buffer, word);

    int i;
    int counter=0;


    for(i=0;i<strlen(buffer);i++)
    {
        if(buffer[i]=='a'|| buffer[i]=='e' || buffer[i]=='i' || buffer[i]=='o' || buffer[i]=='u' || buffer[i]=='A' || buffer[i]=='E' || buffer[i]=='I' || buffer[i]=='O' || buffer[i]=='U')
        {
           word[i] = '+';
           counter++;
        }

    }

    printf("The modified string is %s",word);

    printf("in total there was %d vowels.",counter);

    return 0;

}
#包括
#包括
#包括
int main()
{
字符缓冲区[80];
字符字[80];
char-word2[80];
scanf(“%s”,单词);
strcpy(缓冲区、字);
int i;
int计数器=0;
对于(i=0;i试试这个

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char buffer[80];
    char word[80];
    char word2[80];
    scanf("%s",word);
    strcpy(buffer, word);

    int i;
    int counter=0;


    for(i=0;i<strlen(buffer);i++)
    {
        if(buffer[i]=='a'|| buffer[i]=='e' || buffer[i]=='i' || buffer[i]=='o' || buffer[i]=='u' || buffer[i]=='A' || buffer[i]=='E' || buffer[i]=='I' || buffer[i]=='O' || buffer[i]=='U')
        {
           word[i] = '+';
           counter++;
        }

    }

    printf("The modified string is %s",word);

    printf("in total there was %d vowels.",counter);

    return 0;

}
#包括
#包括
#包括
int main()
{
字符缓冲区[80];
字符字[80];
char-word2[80];
scanf(“%s”,单词);
strcpy(缓冲区、字);
int i;
int计数器=0;

for(i=0;第二个for语句不完整。对于此类问题,请始终在问题中包含准确的错误消息。我看到三个编译器问题:1)以:
if(buffer[i]==“a”|
开头的行,其中所有字符串文本(如“a”)都应为:“a”。2)此行:
strcat(word2,buffer[i]);
正在为第二个参数传递一个字符。两个参数都必须是指针。建议:
strncat(word2,&buffer[i,1]);
3)此行:
word2[i]=”;
正在尝试为字符分配指针。建议:
word2[i]='\0';
在调用
scanf()
(或任何scanf()函数族)1)时始终检查返回值(而不是参数值)以确保操作成功。2)将“%s”格式说明符与
scanf()一起使用时
始终包含小于输入缓冲区大小1的长度修饰符。否则,用户可能会使输入缓冲区溢出,导致未定义的行为,并可能导致seg故障事件。代码块以:
开头,用于(i=0;iThe second for语句不完整。对于此类问题,请始终在问题中包含准确的错误消息。我看到三个编译器问题:1)以:
if(buffer[i]==“a”|
开头的行,其中所有字符串文字(如“a”)都应为:“a”。2)此行:
strcat(word2,buffer[i]);
正在为第二个参数传递一个字符。两个参数都必须是指针。建议:
strncat(word2,&buffer[i,1]);
3)此行:
word2[i]=”;
正在尝试为字符分配指针。建议:
word2[i]='\0';
在调用
scanf()
(或任何scanf()函数族)时1)始终检查返回值(而不是参数值)以确保操作成功。2)将“%s”格式说明符与
scanf()一起使用时
始终包含小于输入缓冲区大小1的长度修饰符。否则,用户可能会溢出输入缓冲区,导致未定义的行为,并可能导致seg故障事件。代码块从:
for(i=0;iIn此外,我建议用
if(strchr)替换巨型if语句(“aeiouAEIOU”、buffer[i])…
if(strchr(“aeiou”、tolower(buffer[i]))…
此外,我建议用
if(strchr(“aeiouAEIOU”、buffer[i])…
if(strchr(“aeiou”、tolower(buffer[i]))…