我正在通过一个函数传递一个字符串,该函数被放入一个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;
}
答案 0 :(得分:0)
你试图写一个字符串文字但不应该 如果你给一个初始化的,以null结尾的,非const的chars数组作为参数,你应该没有问题。
答案 1 :(得分:0)
@n.m和@Yunnosch引导我找到正确的解决方案,如下所示。我不会删除我的问题以防其他人遇到同样的问题
case