gpt4 book ai didi

c - 每次我尝试获取命令行输入时都会出现段错误

转载 作者:行者123 更新时间:2023-11-30 14:50:11 25 4
gpt4 key购买 nike

我一直在开发一个程序,该程序将一个字符串作为命令行输入,并输出由奇数字符组成的字符串是否是回文,但每次我尝试运行它时都会遇到段错误。我彻夜未眠,想不通。

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

int main(int argc, char *argv[]) {
if (argc == 1) {
printf("Give a string please\n");
return 0;
}

//char *ptr1;
//ptr1 = malloc(sizeof(char)*100);
//int memSize = strlen(argv[1]);
//leftovers from previous attempts I may get back to
char *str1 = argv[1];

if (isPalindrome(*str1))
printf("it is a palindrome");
else
printf("not a palindrome");
}

int isPalindrome(char str[])
{
char oddStr[sizeof(char)*50];
int j = 0;

for (int i = 0; i < strlen(*str); i++) {
if(i%2 == 1) {
oddStr[j] = str[i];
j++;
}
}


int i = 0;
int k = strlen(&oddStr) - 1;

while (k > i) {
if (oddStr[i++] != oddStr[k--])
return 0;
}
return 1;
}

每次运行时都会出现此错误:

Segmentation fault (core dumped)

有人知道是什么原因造成的吗?

最佳答案

你的问题

if (isPalindrome(*str1))

由于 strchar * 类型,因此在这里,您将字符传递给 isPalindrome() 函数,而不是字符串!

解决方案

不要取消引用您的指针,只需像这样传递它:

if (isPalindrome(str1))

另外,不要忘记启用编译器的警告。您的编译器可以检测到该错误,您将避免浪费时间调试代码来查找错误。

对于 gccclang,使用标志 -Wall-Wextra

关于c - 每次我尝试获取命令行输入时都会出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49109841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com