我有这三个文件main. h,4-main. c和4-print_rev.c,所有这三个文件都需要反向打印一个字符串。我不允许使用标准库,因此我没有使用strlen()或printf(),我必须使用_putchar(),它执行与putchar()相同的操作。
然而,当我在Linux沙箱上编译和运行时,我得到了分段错误(核心转储)错误。我使用了在线编译器,它工作正常。请帮助。x1c 0d1x
main.h
#define MAIN_H
#include <stdio.h>
#include <stdlib.h>
int _putchar(char c);
void reset_to_98(int *n);
void swap_int( int *a, int *b);
int _strlen(char *s);
void _puts(char *s);
void print_rev(char *s);
#endif
4-main.c
#include "main.h"
/**
* main - check the code
*
* Return: Always 0.
*/
int main(void)
{
char *str;
str = "I do not fear computers. I fear the lack of them - Isaac Asimov";
print_rev(str);
return (0);
}
4-print_rev.c
#include "main.h"
/**
* print_rev - prints a string
* @s: the string to be printed
*/
void print_rev(char *s)
{
int i;
while (s[i] != '\0')
{
i++;
}
while (i > 0)
{
_putchar(s[i-1]);
i--;
}
_putchar('\n');
}
1条答案
按热度按时间nhhxz33t1#
我意识到没有将迭代器i初始化为0是导致分段错误的原因。
所以我更新了我的4-print_rev.c到这个,我很好去。再次感谢@Vlad