我写了一个简单的方法,从一个长字符串获取输入并打印它。我将数据保存在char数组中,并尝试将数组的最后一个元素设置为'\ 0',以便终止空值,以便我可以printf(%s,array)。C字符数组打印为字符串错误,接受空终止?
#include <stdio.h>
#define MAX 9
#define DEBUG 1
int QUIT = 0;
int assignNewBoard(void);
void main (int argc, char *argv[]) {
assignNewBoard();
}
int assignNewBoard(void) {
int row,col , count=0,maxCount=(MAX*MAX);
char ch;
char input[maxCount+MAX]; //our buffer with room for overflow.
//Hopefully never more than 90chars.
while((ch = fgetc(stdin)) != '\n') {
//input checks
if(feof(stdin)){
if(DEBUG) printf("Finished!\n");
QUIT = 1;
}
count++;
input[count] = ch;
}
if(DEBUG)printf("::");
input[count+1] = '\0'; //null termination for printing.
printf("%s\n",input);//This doesn't seem to happen at all in output!
if(DEBUG) printf("We got %d count!\n", count);
return 0;
}
但上述代码不会将我的字符数组打印为字符串!只需在:: in控制台后打印空白即可! 那么我在这里做错了什么?在我的代码中,我一直在这样工作,但现在不是这样,即使在简化的文件中也是如此!
运行时应该有一行“:(:(输入)”,但行简单地是“::”来代替。
我正在使用GCC进行编译。
有什么问题? –
更好地解释了问题。 – user1695505
似乎对我来说很好,这取决于你真正想要做什么。编辑:它为我打印一个字符串,你使用什么IDE /编译器? –