#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10
void sort(char *a[N])
{
int i,j;
char *p;
for (i=0; i<N-1; i++)
for (j=i+1; j<N; j++)
if (strcmp(a[i],a[j])<0)
{
p=a[i];
a[i]=a[j];
a[j]=p;
}
return ;
}
int main(void)
{
char *a[N];
int i;
printf("Input the country:\n");
for (i=0; i<N; i++)
scanf("%s",a[i]);
sort(a);
printf("The sort is :\n");
for (i=0; i<N; i++)
printf("%s\n",a[i]); /* puts(a[i]);*/
system("pause");
return 0;
}
程序很简单,就是输入几个字符串,进行排序。
问题就出在红色地方的printf,如果用printf输出,某个字符串就会成这种样子:(null)。
但是用puts输出的时候,又是对的。为什么会这样,这两个应该是一样的吧。我用的是TC2。
还有,当我把这个程序放到DEV C++下面的时候,当输入第一个字符串,就谈出一个窗口:“什么内存不能为WRITE之类的东西”。这个是为什么?
希望大家帮忙哈! 谢谢....