【发布时间】:2014-05-09 23:57:02
【问题描述】:
我正在尝试将字符串传递给 C 中的函数。该字符串将由用户输入,然后传递给函数以写入文本文件。我知道这看起来很基础,但我只是在学习 C。
#include <stdio.h>
#include <string.h>
void read() {
char text[50][30],buffer[150];
int i=0;
FILE *file_in;
file_in=fopen("test.txt","r");
if (file_in == NULL) {
printf("Error opening file\n");
}
while (fgets(buffer,150,file_in)) {
strcpy(text[i],buffer);
printf("line %d: %s\n",i,text[i]);
i++;
}
getchar();
fclose(file_in);
}
void write(char str[])
{
FILE *file_in;
file_in=fopen("test.txt","a");
if (file_in == NULL) {
printf("Error opening file\n");
}
//write to the file
fprintf(file_in, "\n%s", str);
// fputs(str, file_in);
fclose(file_in);
}
int main()
{
read();
char msg[50];
printf("Enter some text: ");
puts(msg);
write(msg);
return 0;
}
它写入文件,但写入的是奇怪的字符,而不是我实际键入的字符。我做错了什么?
【问题讨论】:
-
它写了什么?像 0x049569...?
-
我写了一个像盒子一样的东西,里面有很多字符。
-
请在您的问题中发布它打印的内容
-
你永远不会在
msg中存储一个值,所以它包含垃圾。 -
我尝试将输出粘贴到此处,但是当我粘贴它时,它实际上并没有显示在此处。当我查看 vim 编辑器上的文件时,它显示为 ^A。当我在 gedt 上打开它时,它显示为垃圾