我写了一个由main和一个函数expand组成的程序。问题是代码在编译并使用Xcode(最新版本)运行时返回预期结果,但是当编译并通过终端使用gcc编译器运行时,代码在运行后立即被卡住(没有警告或错误!)。这是我用来编译终端代码的命令:
gcc expand.c -o expand -Wall -pedantic -ansi
以下是我的代码。我不知道我的问题是什么:
#include <stdio.h>
#define MAX_LEN 100
#define ATOI_GAP 48
void expand(char s1[], char s2[]);
int main()
{
int i;
char s2[MAX_LEN]; /* declare the target array */
char s1[4]; /* declare the source array */
s1[0] = 'a';
s1[1] = '-';
s1[2] = 'z';
s1[3] = '\0';
for(i = 0; i < MAX_LEN; ++i) { /* print s2 array */
printf("%d ", s2[i]);
}
expand(s1, s2);
for(i = 0; s2[i] != '\0'; ++i) { /* print s2 array */
printf("%c ", s2[i]);
}
return 0;
}
/* the function gets string s1 of format "letterX-letterY"
and fills the "-" with the consequent letters from letterX to
letterY. For example, if s1 = "a-d", then s2 will be "abcd"*/
void expand(char s1[], char s2[]) {
int start = s2[0] = s1[0]; /* the first letter of the array s2 is the same as that of the array s1 */
int stop = s1[2]; /* determine at which letter we need to stop */
int j;
printf("inside expand");
for(j = 1; j < stop - '0' - ATOI_GAP; ++j) {
s2[j] = ++start; /* fill in the gap */
}
s2[j] = '\0';
printf("finished expand");
}
答案 0 :(得分:-1)
发现问题,我错误地运行了输出C文件。我之前使用所有C输出文件导出路径,因此要调用有问题的文件我只是输入&#34; filename&#34;在终端。但是,导出的路径没有正确采购,因此我没有得到任何结果。当我运行文件为&#34; ./ filename&#34;一切正常。