将空字符写入函数

时间:2017-12-14 22:24:51

标签: c arrays function segmentation-fault

我已经做了很多挖掘,但似乎无法找到类似于我所拥有的问题。

我正在通过一个函数传递一个字符串,该函数被放入一个char数组,然后它通过这个char数组查看第一个非十进制值的位置并在那里放置一个空字符。它通过将数组的值与ascii比较为0-9来实现。 我的源代码给了我一个分段错误,但是如果我通过main函数运行一切它工作正常并且我的结果是预期的?有任何想法吗?我的源代码在

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

int try_null (char []); //function prototype

    int main () 
    {

      printf("length is %d\n", try_null("123.txt")); 


      //This part doesn't give me a segmentation fault  
      /*char a [10]; 
      strcpy(a, "123.txt"); 
      int counter = 0, length = strlen(a); 

        for (counter = 0; counter < length; ++counter)
        {
            if ( (a[counter] >= 48) && (a[counter] <= 57) );        //if the value is a decimal leave it 
            else 
                a[counter]='\0';                            //replace the first non decimal value with a null
        }
      length=strlen(a); 
      printf("%d\n", length); */

    }

    try_null(char value [10])
    {
      int counter, length = strlen(value);                      //find the current length of the array
      printf("value is %d\n", length); 

      for (counter = 0; counter < length; ++counter) 
         printf("value is %c\n", value[counter]); 

        //getting rid of non-decimals
        for (counter = 0; counter < length; ++counter)
        {
            if ( (value[counter] >= 48) && (value[counter] <= 57) );        //if the value is a decimal leave it 
            else 
            {
                value[counter]='\0';                            //replace the first non decimal value with a null


            }
        }
      length=strlen(value); 
      return length; 
    }  

2 个答案:

答案 0 :(得分:0)

你试图写一个字符串文字但不应该 如果你给一个初始化的,以null结尾的,非const的chars数组作为参数,你应该没有问题。

答案 1 :(得分:0)

@n.m和@Yunnosch引导我找到正确的解决方案,如下所示。我不会删除我的问题以防其他人遇到同样的问题

case