将字符数组指定为函数参数的正确语法是什么?

时间:2013-04-13 00:23:25

标签: c compiler-errors parameter-passing

将字符数组指定为函数的参数之一的正确语法是什么?

我不知道自己是否感到压力,无法找到错误,或者因为我已离开C一段时间了。我只是无法发现错误。请帮忙!

#include <stdio.h>
#include <string.h>
void reverseWord(int len, char[] str, int index)
{
    int start, end;
    char temp;
    start = index - len;
    end = index - 1;
    while (start <= end)
    {
        temp = str[start];
        str[start] = str[end];
        str[end] = temp;
        start++;
        end --;
    }
}

void main()
{
    int i,j=0, len;
    int tmp = 0;
    char str[]="i am a loser";
    char word[]= " ";
    len = strlen(str);
    for(i=0;i<len;i++)
    { 
        if(str[i] == ' ')
        {
            tmp = strlen(word);
            if(tmp != 0)
            {    
                 reverseWord(tmp , str ,i);
                 j = 0; <<ERROR PRONE LINE>>
            }
        }
       else
           word[j++]=str[i];
    }

    printf ("final string = %s",str); 
}

我一直收到此错误

error: expected ‘;’, ‘,’ or ‘)’ before ‘str’ on line marked above

5 个答案:

答案 0 :(得分:3)

您缺少第}

的右大括号if(str[i] == ' ')

答案 1 :(得分:2)

问题出在str函数reverseWord的定义中。而不是char[] str,如果将其修改为char* str,则编译将成功。

如果您希望使用[]概念,那么一个可能的解决方案可能是将新数据类型定义为

typedef char myArrStr[100];

myArrStr定义为100个元素的字符数组。

reverseWord的函数定义中,您可以将定义修改为

void reverseWord(int len, myArrStr str, int index)

str的定义可以修改为

myArrStr str = "i am a winner"; // Changed your message :-)

通过这些更新,您的代码应该可以正常工作。

答案 2 :(得分:1)

你忘记了一个大括号

if(str[i] == ' ')
{
            tmp = strlen(word);
            if(tmp != 0)
            {    
                 reverseWord(tmp , str ,i);
                 j = 0; <<ERROR PRONE LINE>>
            }
}
else
{
           word[j++]=str[i];
}

答案 3 :(得分:1)

有一个缺失的右括号应该在else语句的正上方。

另外,总是围绕ifelse语句的内容包含大括号是一个非常好的主意,因为如果您最后添加另一行,只会在下面添加另一行。将执行ifelse语句(此错误很难发现)。

更正后的代码:

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

void main()
{
    int i,j=0, len;
    int tmp = 0;
    char str[]="i am a loser";
    char word[]= " ";
    len = strlen(str);
    for(i=0;i<len;i++)
    { 
        if(str[i] == ' ')
        {
            tmp = strlen(word);
            if(tmp != 0)
            {    
                 reverseWord(tmp , str ,i);
                 j = 0; <<ERROR PRONE LINE>>
            }
        }
       else
       {
           word[j++]=str[i];
       }
    }

    printf ("final string = %s",str); 
}

答案 4 :(得分:1)

reverseWord函数定义在哪里?您需要包含它所定义的文件:

#include "otherfile.h"

如果在同一文件中定义了该功能,则可以将reverseWord功能移到main。

之上